Skip to content

Commit 0d776db

Browse files
committed
test: 增加单元测试
1 parent 18ee122 commit 0d776db

1 file changed

Lines changed: 80 additions & 22 deletions

File tree

test/UnitTest/Services/ZipArchiveServiceTest.cs

Lines changed: 80 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
// See the LICENSE file in the project root for more information.
44
// Maintainer: Argo Zhang(argo@live.ca) Website: https://www.blazor.zone
55

6+
using System.IO.Compression;
7+
68
namespace UnitTest.Services;
79

810
public class ZipArchiveServiceTest : BootstrapBlazorTestBase
@@ -22,10 +24,15 @@ public async Task Archive_Ok()
2224
using var fs = File.OpenWrite(f);
2325
fs.WriteByte(65);
2426
});
25-
var stream = await archService.ArchiveAsync(files);
27+
var items = files.Select(i => new ArchiveEntry()
28+
{
29+
SourceFileName = i,
30+
EntryName = Path.GetFileName(i)
31+
});
32+
var stream = await archService.ArchiveAsync(items);
2633
Assert.NotNull(stream);
2734

28-
stream = await archService.ArchiveAsync(files, new ArchiveOptions()
35+
stream = await archService.ArchiveAsync(items, new ArchiveOptions()
2936
{
3037
CompressionLevel = System.IO.Compression.CompressionLevel.Optimal,
3138
Encoding = System.Text.Encoding.UTF8,
@@ -35,7 +42,7 @@ public async Task Archive_Ok()
3542
Assert.NotNull(stream);
3643

3744
var archiveFile = Path.Combine(root, "test.zip");
38-
await archService.ArchiveAsync(archiveFile, files);
45+
await archService.ArchiveAsync(archiveFile, items);
3946
Assert.True(File.Exists(archiveFile));
4047

4148
// GetEntry
@@ -48,7 +55,7 @@ public async Task Archive_Ok()
4855
{
4956
Directory.Delete(destFolder, true);
5057
}
51-
archService.ExtractToDirectory(archiveFile, destFolder);
58+
await archService.ExtractToDirectoryAsync(archiveFile, destFolder);
5259
Assert.True(Directory.Exists(destFolder));
5360

5461
// 删除文件夹
@@ -70,32 +77,83 @@ public async Task Archive_Ok()
7077
{
7178
File.Delete(destFile);
7279
}
73-
await archService.ArchiveDirectory(destFile, destFolder, includeBaseDirectory: true);
80+
await archService.ArchiveDirectoryAsync(destFile, destFolder, includeBaseDirectory: true);
7481
Assert.True(File.Exists(destFile));
7582
File.Delete(destFile);
7683

77-
await Assert.ThrowsAsync<ArgumentNullException>(() => archService.ArchiveDirectory(null!, destFolder, includeBaseDirectory: true));
84+
await Assert.ThrowsAsync<ArgumentNullException>(() => archService.ArchiveDirectoryAsync(null!, destFolder, includeBaseDirectory: true));
85+
}
7886

79-
// 测试压缩多个文件夹
80-
var entries = new List<string>()
87+
[Fact]
88+
public async Task ZipArchive_Ok()
89+
{
90+
var fileName = Path.Combine(AppContext.BaseDirectory, "test", "3.zip");
91+
if (File.Exists(fileName))
8192
{
82-
destFolder,
83-
tempFolder,
84-
};
85-
entries.AddRange(files);
93+
File.Delete(fileName);
94+
}
8695

87-
destFile = Path.Combine(root, "folder.zip");
88-
if (File.Exists(destFile))
96+
using var fs = File.OpenWrite(fileName);
97+
using var zip = new ZipArchive(fs, ZipArchiveMode.Create);
98+
99+
var item = Path.Combine(AppContext.BaseDirectory, "test", "1.txt");
100+
zip.CreateEntry("text/");
101+
await zip.CreateEntryFromFileAsync(item, "text/1.txt");
102+
}
103+
104+
[Fact]
105+
public async Task ArchiveAsync_Ok()
106+
{
107+
var fileName = Path.Combine(AppContext.BaseDirectory, "archive_test", "test.zip");
108+
if (File.Exists(fileName))
89109
{
90-
File.Delete(destFile);
110+
File.Delete(fileName);
91111
}
92-
Assert.False(File.Exists(destFile));
93-
var subFolder = Path.Combine(tempFolder, "sub");
94-
if (!Directory.Exists(subFolder))
112+
113+
var root = AppContext.BaseDirectory;
114+
var files = new string[]
95115
{
96-
Directory.CreateDirectory(subFolder);
97-
}
98-
await archService.ArchiveDirectory(destFile, entries);
99-
Assert.True(File.Exists(destFile));
116+
Path.Combine(root, "archive_test", "test1", "1.txt"),
117+
Path.Combine(root, "archive_test", "test2", "2.txt")
118+
};
119+
files.ToList().ForEach(f =>
120+
{
121+
var folder = Path.GetDirectoryName(f);
122+
if (!string.IsNullOrEmpty(folder) && !Directory.Exists(folder))
123+
{
124+
Directory.CreateDirectory(folder);
125+
}
126+
using var fs = File.OpenWrite(f);
127+
fs.WriteByte(65);
128+
});
129+
130+
var archService = Context.Services.GetRequiredService<IZipArchiveService>();
131+
await archService.ArchiveAsync(fileName, new List<ArchiveEntry>()
132+
{
133+
new ArchiveEntry()
134+
{
135+
SourceFileName = files[0],
136+
EntryName = "test1/test.log"
137+
},
138+
new ArchiveEntry()
139+
{
140+
SourceFileName = files[1],
141+
EntryName = "test2/test.log",
142+
CompressionLevel = CompressionLevel.Optimal
143+
},
144+
new ArchiveEntry()
145+
{
146+
SourceFileName = Path.Combine(AppContext.BaseDirectory, "archive_test", "test1"),
147+
EntryName = "test1",
148+
},
149+
new ArchiveEntry()
150+
{
151+
SourceFileName = Path.Combine(AppContext.BaseDirectory, "archive_test", "test1"),
152+
EntryName = "test2",
153+
CompressionLevel = CompressionLevel.Optimal
154+
}
155+
});
156+
157+
Assert.True(File.Exists(fileName));
100158
}
101159
}

0 commit comments

Comments
 (0)