|
|
|
@ -1,6 +1,9 @@ |
|
|
|
// ReSharper disable InconsistentNaming
|
|
|
|
namespace ImageSharp.Tests |
|
|
|
{ |
|
|
|
using System; |
|
|
|
using System.Numerics; |
|
|
|
|
|
|
|
using ImageSharp.PixelFormats; |
|
|
|
|
|
|
|
using Xunit; |
|
|
|
@ -32,34 +35,109 @@ namespace ImageSharp.Tests |
|
|
|
Assert.Equal(3, ptr[2]); |
|
|
|
} |
|
|
|
|
|
|
|
public class Equality |
|
|
|
[Theory] |
|
|
|
[MemberData(nameof(ColorData))] |
|
|
|
public void Equals_WhenTrue(byte r, byte g, byte b) |
|
|
|
{ |
|
|
|
var x = new Rgb24(r, g, b); |
|
|
|
var y = new Rgb24(r, g, b); |
|
|
|
|
|
|
|
Assert.True(x.Equals(y)); |
|
|
|
Assert.True(x.Equals((object)y)); |
|
|
|
Assert.Equal(x.GetHashCode(), y.GetHashCode()); |
|
|
|
} |
|
|
|
|
|
|
|
[Theory] |
|
|
|
[InlineData(1, 2, 3, 1, 2, 4)] |
|
|
|
[InlineData(0, 255, 0, 0, 244, 0)] |
|
|
|
[InlineData(1, 255, 0, 0, 255, 0)] |
|
|
|
public void Equals_WhenFalse(byte r1, byte g1, byte b1, byte r2, byte g2, byte b2) |
|
|
|
{ |
|
|
|
var a = new Rgb24(r1, g1, b1); |
|
|
|
var b = new Rgb24(r2, g2, b2); |
|
|
|
|
|
|
|
Assert.False(a.Equals(b)); |
|
|
|
Assert.False(a.Equals((object)b)); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void PackFromRgba32() |
|
|
|
{ |
|
|
|
var rgb = default(Rgb24); |
|
|
|
rgb.PackFromRgba32(new Rgba32(1, 2, 3, 4)); |
|
|
|
|
|
|
|
Assert.Equal(1, rgb.R); |
|
|
|
Assert.Equal(2, rgb.G); |
|
|
|
Assert.Equal(3, rgb.B); |
|
|
|
} |
|
|
|
|
|
|
|
private static Vector4 Vec(byte r, byte g, byte b, byte a = 255) => new Vector4( |
|
|
|
r / 255f, |
|
|
|
g / 255f, |
|
|
|
b / 255f, |
|
|
|
a / 255f); |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void PackFromVector4() |
|
|
|
{ |
|
|
|
var rgb = default(Rgb24); |
|
|
|
rgb.PackFromVector4(Vec(1, 2, 3, 4)); |
|
|
|
|
|
|
|
Assert.Equal(1, rgb.R); |
|
|
|
Assert.Equal(2, rgb.G); |
|
|
|
Assert.Equal(3, rgb.B); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ToVector4() |
|
|
|
{ |
|
|
|
var rgb = new Rgb24(1, 2, 3); |
|
|
|
|
|
|
|
Assert.Equal(Vec(1, 2, 3), rgb.ToVector4()); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ToRgb24() |
|
|
|
{ |
|
|
|
var rgb = new Rgb24(1, 2, 3); |
|
|
|
var dest = default(Rgb24); |
|
|
|
|
|
|
|
rgb.ToRgb24(ref dest); |
|
|
|
|
|
|
|
Assert.Equal(rgb, dest); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ToRgba32() |
|
|
|
{ |
|
|
|
var rgb = new Rgb24(1, 2, 3); |
|
|
|
var rgba = default(Rgba32); |
|
|
|
|
|
|
|
rgb.ToRgba32(ref rgba); |
|
|
|
|
|
|
|
Assert.Equal(new Rgba32(1, 2, 3, 255), rgba); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ToBgr24() |
|
|
|
{ |
|
|
|
var rgb = new Rgb24(1, 2, 3); |
|
|
|
var bgr = default(Bgr24); |
|
|
|
|
|
|
|
rgb.ToBgr24(ref bgr); |
|
|
|
|
|
|
|
Assert.Equal(new Bgr24(1, 2, 3), bgr); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ToBgra32() |
|
|
|
{ |
|
|
|
public static TheoryData<byte, byte, byte> ColorData = Rgb24Tests.ColorData; |
|
|
|
|
|
|
|
[Theory] |
|
|
|
[MemberData(nameof(ColorData))] |
|
|
|
public void WhenTrue(byte r, byte g, byte b) |
|
|
|
{ |
|
|
|
var x = new Rgb24(r, g, b); |
|
|
|
var y = new Rgb24(r, g, b); |
|
|
|
|
|
|
|
Assert.True(x.Equals(y)); |
|
|
|
Assert.True(x.Equals((object)y)); |
|
|
|
Assert.Equal(x.GetHashCode(), y.GetHashCode()); |
|
|
|
} |
|
|
|
|
|
|
|
[Theory] |
|
|
|
[InlineData(1, 2, 3, 1, 2, 4)] |
|
|
|
[InlineData(0, 255, 0, 0, 244, 0)] |
|
|
|
[InlineData(1, 255, 0, 0, 255, 0)] |
|
|
|
public void WhenFalse(byte r1, byte g1, byte b1, byte r2, byte g2, byte b2) |
|
|
|
{ |
|
|
|
var a = new Rgb24(r1, g1, b1); |
|
|
|
var b = new Rgb24(r2, g2, b2); |
|
|
|
|
|
|
|
Assert.False(a.Equals(b)); |
|
|
|
Assert.False(a.Equals((object)b)); |
|
|
|
} |
|
|
|
var rgb = new Rgb24(1, 2, 3); |
|
|
|
var bgra = default(Bgra32); |
|
|
|
|
|
|
|
rgb.ToBgra32(ref bgra); |
|
|
|
|
|
|
|
Assert.Equal(new Bgra32(1, 2, 3, 255), bgra); |
|
|
|
} |
|
|
|
} |
|
|
|
} |