Skip to content

Commit 533ae55

Browse files
committed
添加单元测试
1 parent 9e7ad60 commit 533ae55

5 files changed

Lines changed: 61 additions & 4 deletions

File tree

src/MediaConverters/MediaConverters.Tests/MediaConverters.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
<ItemGroup>
1818
<ProjectReference Include="..\MediaConverters.Lib\MediaConverters.Lib.csproj" />
19+
<ProjectReference Include="..\MediaConverters.Tool\MediaConverters.Tool.csproj" />
1920
<ProjectReference Include="..\TextVisionComparer\TextVisionComparer.csproj" />
2021
</ItemGroup>
2122

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using DotNetCampus.MediaConverters.Contexts;
2+
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using System.Text;
7+
using System.Text.Json;
8+
using System.Text.Json.Serialization;
9+
using System.Threading.Tasks;
10+
11+
namespace DotNetCampus.MediaConverters.Tests.Tool;
12+
13+
[TestClass]
14+
public class MediaConverterTests
15+
{
16+
[TestMethod]
17+
public async Task OptimizeImageFile()
18+
{
19+
var testFolder = Path.Join(TestHelper.WorkingDirectory.FullName, Path.GetRandomFileName());
20+
Directory.CreateDirectory(testFolder);
21+
var workingFolder = Path.Join(testFolder, "Working");
22+
var outputFile = Path.Join(testFolder, "Output.png");
23+
var configFile = Path.Join(testFolder, "Config.json");
24+
25+
var inputFile = TestFileProvider.GetTestFile(TestFileProvider.DefaultTestImageName);
26+
27+
var imageConvertContext = new ImageConvertContext();
28+
29+
var jsonText = JsonSerializer.Serialize(imageConvertContext, new JsonSerializerOptions(SourceGenerationContext.Default.Options)
30+
{
31+
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
32+
});
33+
await File.WriteAllTextAsync(configFile, jsonText);
34+
35+
var options = new Options()
36+
{
37+
WorkingFolder = workingFolder,
38+
InputFile = inputFile.FullName,
39+
OutputFile = outputFile,
40+
ConvertConfigurationFile = configFile,
41+
};
42+
43+
var result = await Program.RunAsync(options);
44+
Assert.AreEqual(ErrorCode.Success, result);
45+
}
46+
}

src/MediaConverters/MediaConverters.Tool/Contexts/ImageConvertContext.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
namespace DotNetCampus.MediaConverters.Contexts;
1+
using System.Text.Json.Serialization;
2+
3+
namespace DotNetCampus.MediaConverters.Contexts;
24

35
public class ImageConvertContext
46
{

src/MediaConverters/MediaConverters.Tool/Program.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,17 @@
1414

1515
namespace DotNetCampus.MediaConverters;
1616

17-
public class Program
17+
class Program
1818
{
19-
public static async Task<int> Main(string[] args)
19+
static async Task<int> Main(string[] args)
2020
{
2121
var options = DotNetCampus.Cli.CommandLine.Parse(args).As<Options>();
2222

23+
return await RunAsync(options);
24+
}
25+
26+
internal static async Task<ErrorCode> RunAsync(Options options)
27+
{
2328
var jsonText = await File.ReadAllTextAsync(options.ConvertConfigurationFile);
2429
var imageConvertContext = JsonSerializer.Deserialize<ImageConvertContext>(jsonText, SourceGenerationContext.Default.Options);
2530

@@ -74,6 +79,6 @@ public static async Task<int> Main(string[] args)
7479

7580
optimizedImageFile.CopyTo(options.OutputFile, overwrite: true);
7681

77-
return 0;
82+
return ErrorCode.Success;
7883
}
7984
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
using System.Runtime.CompilerServices;
2+
3+
[assembly: InternalsVisibleTo("MediaConverters.Tests")]

0 commit comments

Comments
 (0)