Browse Source

turning PorterDuffOutputIsCorrect() into a [Theory]

af/merge-core
Anton Firszov 8 years ago
parent
commit
37e6c6aac8
  1. 59
      tests/ImageSharp.Tests/PixelFormats/PixelBlenders/PorterDuffCompositorTests.cs

59
tests/ImageSharp.Tests/PixelFormats/PixelBlenders/PorterDuffCompositorTests.cs

@ -1,35 +1,37 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Drawing;
using Xunit;
namespace SixLabors.ImageSharp.Tests.PixelFormats.PixelBlenders
{
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Drawing;
using Xunit;
public class PorterDuffCompositorTests
{
// TODO: Add other modes to compare.
private static PixelBlenderMode[] CompositingOperators =
{
PixelBlenderMode.Src,
PixelBlenderMode.Atop,
PixelBlenderMode.Over,
PixelBlenderMode.In,
PixelBlenderMode.Out,
PixelBlenderMode.Dest,
PixelBlenderMode.DestAtop,
PixelBlenderMode.DestOver,
PixelBlenderMode.DestIn,
PixelBlenderMode.DestOut,
PixelBlenderMode.Clear,
PixelBlenderMode.Xor
};
public static readonly TheoryData<PixelBlenderMode> CompositingOperators =
new TheoryData<PixelBlenderMode>
{
PixelBlenderMode.Src,
PixelBlenderMode.Atop,
PixelBlenderMode.Over,
PixelBlenderMode.In,
PixelBlenderMode.Out,
PixelBlenderMode.Dest,
PixelBlenderMode.DestAtop,
PixelBlenderMode.DestOver,
PixelBlenderMode.DestIn,
PixelBlenderMode.DestOut,
PixelBlenderMode.Clear,
PixelBlenderMode.Xor
};
[Fact]
public void PorterDuffOutputIsCorrect()
[Theory]
[MemberData(nameof(CompositingOperators))]
public void PorterDuffOutputIsCorrect(PixelBlenderMode mode)
{
string path = TestEnvironment.CreateOutputDirectory("PorterDuff");
var srcFile = TestFile.Create(TestImages.Png.PDSrc);
@ -38,15 +40,12 @@ namespace SixLabors.ImageSharp.Tests.PixelFormats.PixelBlenders
using (Image<Rgba32> src = srcFile.CreateImage())
using (Image<Rgba32> dest = destFile.CreateImage())
{
foreach (PixelBlenderMode m in CompositingOperators)
using (Image<Rgba32> res = dest.Clone(x => x.Blend(src, new GraphicsOptions { BlenderMode = mode })))
{
using (Image<Rgba32> res = dest.Clone(x => x.Blend(src, new GraphicsOptions { BlenderMode = m })))
{
// TODO: Generate reference files once this works.
res.Save($"{path}/{m}.png");
}
// TODO: Generate reference files once this works.
res.Save($"{path}/{mode}.png");
}
}
}
}
}
}
Loading…
Cancel
Save