Improved SRP in Watermark class

This commit is contained in:
Andrew
2026-05-27 21:49:34 +03:00
parent 6030453972
commit e0769c8232
7 changed files with 633 additions and 290 deletions

View File

@@ -11,7 +11,7 @@ namespace UnitTest
public class UnitTest
{
[TestMethod]
public void TextWatermarkTest()
public void TextWatermarkLegacyTest()
{
var watermarker = new Watermarker();
@@ -30,12 +30,12 @@ namespace UnitTest
var resultedImage = watermarker.ProcessImage("TestImages/2.png", "test/text", watermark);
Assert.IsTrue(File.Exists(resultedImage.Path));
Assert.IsNotNull(resultedImage);
Assert.IsTrue(File.Exists(resultedImage.Path));
}
[TestMethod]
public void ImageWatermarkTest()
public void ImageWatermarkLegacyTest()
{
var watermarker = new Watermarker();
var watermark = new ImageWatermark {
@@ -46,12 +46,12 @@ namespace UnitTest
var resultedImage = watermarker.ProcessImage("TestImages/2.png", "test/image", watermark);
Assert.IsTrue(File.Exists(resultedImage.Path));
Assert.IsNotNull(resultedImage);
Assert.IsTrue(File.Exists(resultedImage.Path));
}
[TestMethod]
public void TextWatermarkDirectoryProccessTest()
public void TextWatermarkDirectoryProccessLegacyTest()
{
var watermarker = new Watermarker("test/text/pave");
@@ -74,7 +74,7 @@ namespace UnitTest
}
[TestMethod]
public void ImageWatermarkDirectoryProccessTest()
public void ImageWatermarkDirectoryProccessLegacyTest()
{
var watermarker = new Watermarker("test/image/pave");
var watermark = new ImageWatermark {
@@ -87,5 +87,93 @@ namespace UnitTest
Assert.IsTrue(Directory.GetFiles(watermarker.OutputDir)?.Length > 0);
}
[TestMethod]
public void TextWatermarkPipelineTest()
{
var fileManager = new FileManager();
var renderer = new ImageRenderer();
var pipeline = new WatermarkPipeline(fileManager, renderer);
var availableFont = SystemFonts.Families.FirstOrDefault();
if (availableFont == default)
{
throw new Exception("No available fonts found in the system");
}
var watermark = new TextWatermark{
Font = availableFont.CreateFont(1),
Text = "Test",
Style = { Color = Color.White },
Layout = { Position = ImagePosition.BottomCenter , RotateAngle = 90 }
};
var resultedImage = pipeline.ProcessImage("TestImages/2.png", "test/pipeline/text", watermark);
Assert.IsNotNull(resultedImage);
Assert.IsTrue(File.Exists(resultedImage.Path));
}
[TestMethod]
public void ImageWatermarkPipelineTest()
{
var fileManager = new FileManager();
var renderer = new ImageRenderer();
var pipeline = new WatermarkPipeline(fileManager, renderer);
var watermark = new ImageWatermark {
ImagePath = "TestImages/sample_wm.png",
Layout = { Position = ImagePosition.Center, Scale = 1 },
Style = { Opacity = 1 }
};
var resultedImage = pipeline.ProcessImage("TestImages/2.png", "test/pipeline/image", watermark);
Assert.IsNotNull(resultedImage);
Assert.IsTrue(File.Exists(resultedImage.Path));
}
[TestMethod]
public void TextWatermarkDirectoryPipelineTest()
{
var fileManager = new FileManager();
var renderer = new ImageRenderer();
var pipeline = new WatermarkPipeline(fileManager, renderer);
var availableFont = SystemFonts.Families.FirstOrDefault();
if (availableFont == default)
{
throw new Exception("No available fonts found in the system");
}
var watermark = new TextWatermark {
Text = "Test",
Font = availableFont.CreateFont(1),
Style = { Color = Rgba32.ParseHex("FFFFFF50"), Pave = true },
Layout = { Scale = 1f, Position = ImagePosition.TopLeft }
};
var results = pipeline.ProcessDirectory("TestImages", "test/pipeline/text/dir", watermark);
Assert.IsTrue(results.Count > 0);
}
[TestMethod]
public void ImageWatermarkDirectoryPipelineTest()
{
var fileManager = new FileManager();
var renderer = new ImageRenderer();
var pipeline = new WatermarkPipeline(fileManager, renderer);
var watermark = new ImageWatermark {
ImagePath = "TestImages/sample_wm.png",
Layout = { Position = ImagePosition.Center, Scale = 1},
Style = { Pave = true, Opacity = 1}
};
var results = pipeline.ProcessDirectory("TestImages", "test/pipeline/image/dir", watermark);
Assert.IsTrue(results.Count > 0);
}
}
}