//
// Copyright (c) James Jackson-South and contributors.
// Licensed under the Apache License, Version 2.0.
//
namespace ImageSharp.Tests
{
using System;
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, IEquatable
{
using (PixelAccessor pixels = image.Lock())
{
byte red = 1;
byte green = 2;
byte blue = 3;
byte alpha = 255;
using (PixelArea row = new PixelArea(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, IEquatable
{
using (PixelAccessor pixels = image.Lock())
{
byte red = 1;
byte green = 2;
byte blue = 3;
byte alpha = 4;
using (PixelArea row = new PixelArea(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, IEquatable
{
using (PixelAccessor pixels = image.Lock())
{
byte red = 1;
byte green = 2;
byte blue = 3;
using (PixelArea row = new PixelArea(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, IEquatable
{
using (PixelAccessor pixels = image.Lock())
{
byte red = 1;
byte green = 2;
byte blue = 3;
byte alpha = 4;
using (PixelArea row = new PixelArea(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]);
}
}
}
}
}