From e82a5f6e3c0e019d542e0471222d39a7f7a13fac Mon Sep 17 00:00:00 2001 From: dirk Date: Sat, 5 Nov 2016 10:59:05 +0100 Subject: [PATCH] Added unit tests to test copying to and from ZYX and ZYXW. --- tests/ImageSharp.Tests/PixelAccessorTests.cs | 168 +++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 tests/ImageSharp.Tests/PixelAccessorTests.cs diff --git a/tests/ImageSharp.Tests/PixelAccessorTests.cs b/tests/ImageSharp.Tests/PixelAccessorTests.cs new file mode 100644 index 0000000000..ab71d8de79 --- /dev/null +++ b/tests/ImageSharp.Tests/PixelAccessorTests.cs @@ -0,0 +1,168 @@ +// +// Copyright (c) James Jackson-South and contributors. +// Licensed under the Apache License, Version 2.0. +// + +namespace ImageSharp.Tests +{ + using Xunit; + + /// + /// Tests the class. + /// + public class PixelAccessorTests + { + [Fact] + public void CopyFromZYX() + { + CopyFromZYX(new Image(1, 1)); + } + + [Fact] + public void CopyFromZYXOptimized() + { + CopyFromZYX(new Image(1, 1)); + } + + [Fact] + public void CopyFromZYXW() + { + CopyFromZYXW(new Image(1, 1)); + } + + [Fact] + public void CopyFromZYXWOptimized() + { + CopyFromZYXW(new Image(1, 1)); + } + + [Fact] + public void CopyToZYX() + { + CopyToZYX(new Image(1, 1)); + } + + [Fact] + public void CopyToZYXOptimized() + { + CopyToZYX(new Image(1, 1)); + } + + [Fact] + public void CopyToZYXW() + { + CopyToZYXW(new Image(1, 1)); + } + + [Fact] + public void CopyToZYXWOptimized() + { + CopyToZYXW(new Image(1, 1)); + } + + private static void CopyFromZYX(Image image) + where TColor : struct, IPackedPixel + where TPacked : struct + { + using (PixelAccessor pixels = image.Lock()) + { + byte red = 1; + byte green = 2; + byte blue = 3; + byte alpha = 255; + + using (PixelRow row = new PixelRow(1, ComponentOrder.ZYX)) + { + row.Bytes[0] = blue; + row.Bytes[1] = green; + row.Bytes[2] = red; + + pixels.CopyFrom(row, 0); + + Color color = (Color) (object) pixels[0, 0]; + Assert.Equal(red, color.R); + Assert.Equal(green, color.G); + Assert.Equal(blue, color.B); + Assert.Equal(alpha, color.A); + } + } + } + + private static void CopyFromZYXW(Image image) + where TColor : struct, IPackedPixel + where TPacked : struct + { + using (PixelAccessor pixels = image.Lock()) + { + byte red = 1; + byte green = 2; + byte blue = 3; + byte alpha = 4; + + using (PixelRow row = new PixelRow(1, ComponentOrder.ZYXW)) + { + row.Bytes[0] = blue; + row.Bytes[1] = green; + row.Bytes[2] = red; + row.Bytes[3] = alpha; + + pixels.CopyFrom(row, 0); + + Color color = (Color) (object) pixels[0, 0]; + Assert.Equal(red, color.R); + Assert.Equal(green, color.G); + Assert.Equal(blue, color.B); + Assert.Equal(alpha, color.A); + } + } + } + + private static void CopyToZYX(Image image) + where TColor : struct, IPackedPixel + where TPacked : struct + { + using (PixelAccessor pixels = image.Lock()) + { + byte red = 1; + byte green = 2; + byte blue = 3; + + using (PixelRow row = new PixelRow(1, ComponentOrder.ZYX)) + { + pixels[0, 0] = (TColor) (object) new Color(red, green, blue); + + pixels.CopyTo(row, 0); + + Assert.Equal(blue, row.Bytes[0]); + Assert.Equal(green, row.Bytes[1]); + Assert.Equal(red, row.Bytes[2]); + } + } + } + + private static void CopyToZYXW(Image image) + where TColor : struct, IPackedPixel + where TPacked : struct + { + using (PixelAccessor pixels = image.Lock()) + { + byte red = 1; + byte green = 2; + byte blue = 3; + byte alpha = 4; + + using (PixelRow row = new PixelRow(1, ComponentOrder.ZYXW)) + { + pixels[0, 0] = (TColor) (object) new Color(red, green, blue, alpha); + + pixels.CopyTo(row, 0); + + Assert.Equal(blue, row.Bytes[0]); + Assert.Equal(green, row.Bytes[1]); + Assert.Equal(red, row.Bytes[2]); + Assert.Equal(alpha, row.Bytes[3]); + } + } + } + } +}