finally
This commit is contained in:
65
Minint.Tests/ImageEffectsTests.cs
Normal file
65
Minint.Tests/ImageEffectsTests.cs
Normal file
@@ -0,0 +1,65 @@
|
||||
using Minint.Core.Models;
|
||||
using Minint.Core.Services.Impl;
|
||||
|
||||
namespace Minint.Tests;
|
||||
|
||||
public class ImageEffectsTests
|
||||
{
|
||||
private readonly ImageEffectsService _effects = new();
|
||||
|
||||
[Fact]
|
||||
public void ApplyGrayscale_ConvertsColors()
|
||||
{
|
||||
var doc = new MinintDocument("test");
|
||||
var red = new RgbaColor(255, 0, 0, 255);
|
||||
doc.EnsureColorCached(red);
|
||||
|
||||
_effects.ApplyGrayscale(doc);
|
||||
|
||||
var gray = doc.Palette[1];
|
||||
Assert.Equal(gray.R, gray.G);
|
||||
Assert.Equal(gray.G, gray.B);
|
||||
Assert.Equal(255, gray.A);
|
||||
// BT.601: 0.299*255 ≈ 76
|
||||
Assert.InRange(gray.R, 74, 78);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ApplyGrayscale_PreservesTransparentIndex()
|
||||
{
|
||||
var doc = new MinintDocument("test");
|
||||
doc.EnsureColorCached(new RgbaColor(100, 200, 50, 255));
|
||||
|
||||
_effects.ApplyGrayscale(doc);
|
||||
|
||||
Assert.Equal(RgbaColor.Transparent, doc.Palette[0]);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ApplyContrast_IncreasesContrast()
|
||||
{
|
||||
var doc = new MinintDocument("test");
|
||||
var midGray = new RgbaColor(128, 128, 128, 255);
|
||||
var lightGray = new RgbaColor(192, 192, 192, 255);
|
||||
doc.EnsureColorCached(midGray);
|
||||
doc.EnsureColorCached(lightGray);
|
||||
|
||||
_effects.ApplyContrast(doc, 2.0);
|
||||
|
||||
// midGray (128) stays ~128: factor*(128-128)+128 = 128
|
||||
Assert.InRange(doc.Palette[1].R, 126, 130);
|
||||
// lightGray (192): factor*(192-128)+128 = 2*64+128 = 256 → clamped to 255
|
||||
Assert.Equal(255, doc.Palette[2].R);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ApplyContrast_PreservesAlpha()
|
||||
{
|
||||
var doc = new MinintDocument("test");
|
||||
doc.EnsureColorCached(new RgbaColor(100, 100, 100, 200));
|
||||
|
||||
_effects.ApplyContrast(doc, 1.5);
|
||||
|
||||
Assert.Equal(200, doc.Palette[1].A);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user