|
|
|
@ -33,37 +33,50 @@ namespace SixLabors.ImageSharp.Tests.PixelFormats |
|
|
|
Assert.Equal(Vector4.One, new Rgba64(ushort.MaxValue, ushort.MaxValue, ushort.MaxValue, ushort.MaxValue).ToVector4()); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Rgba64_ToScaledVector4() |
|
|
|
[Theory] |
|
|
|
[InlineData(ushort.MaxValue, ushort.MaxValue, ushort.MaxValue, ushort.MaxValue)] |
|
|
|
[InlineData(0, 0, 0, 0)] |
|
|
|
[InlineData(ushort.MaxValue/2, 100, 2222, 33333)] |
|
|
|
public void Rgba64_ToScaledVector4(ushort r, ushort g, ushort b, ushort a) |
|
|
|
{ |
|
|
|
// arrange
|
|
|
|
var short2 = new Rgba64(ushort.MaxValue, ushort.MaxValue, ushort.MaxValue, ushort.MaxValue); |
|
|
|
var short2 = new Rgba64(r, g, b, a); |
|
|
|
|
|
|
|
float max = ushort.MaxValue; |
|
|
|
float rr = r / max; |
|
|
|
float gg = g / max; |
|
|
|
float bb = b / max; |
|
|
|
float aa = a / max; |
|
|
|
|
|
|
|
// act
|
|
|
|
Vector4 actual = short2.ToScaledVector4(); |
|
|
|
|
|
|
|
// assert
|
|
|
|
Assert.Equal(1, actual.X); |
|
|
|
Assert.Equal(1, actual.Y); |
|
|
|
Assert.Equal(1, actual.Z); |
|
|
|
Assert.Equal(1, actual.W); |
|
|
|
Assert.Equal(rr, actual.X); |
|
|
|
Assert.Equal(gg, actual.Y); |
|
|
|
Assert.Equal(bb, actual.Z); |
|
|
|
Assert.Equal(aa, actual.W); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Rgba64_FromScaledVector4() |
|
|
|
[Theory] |
|
|
|
[InlineData(ushort.MaxValue, ushort.MaxValue, ushort.MaxValue, ushort.MaxValue)] |
|
|
|
[InlineData(0, 0, 0, 0)] |
|
|
|
[InlineData(ushort.MaxValue/2, 100, 2222, 33333)] |
|
|
|
public void Rgba64_FromScaledVector4(ushort r, ushort g, ushort b, ushort a) |
|
|
|
{ |
|
|
|
// arrange
|
|
|
|
var pixel = default(Rgba64); |
|
|
|
var short4 = new Rgba64(ushort.MaxValue, ushort.MaxValue, ushort.MaxValue, ushort.MaxValue); |
|
|
|
const ulong expected = 0xFFFFFFFFFFFFFFFF; |
|
|
|
|
|
|
|
|
|
|
|
var source = new Rgba64(r, g, b, a); |
|
|
|
|
|
|
|
// act
|
|
|
|
Vector4 scaled = short4.ToScaledVector4(); |
|
|
|
pixel.FromScaledVector4(scaled); |
|
|
|
ulong actual = pixel.PackedValue; |
|
|
|
Vector4 scaled = source.ToScaledVector4(); |
|
|
|
|
|
|
|
|
|
|
|
Rgba64 actual = default; |
|
|
|
actual.FromScaledVector4(scaled); |
|
|
|
|
|
|
|
// assert
|
|
|
|
Assert.Equal(expected, actual); |
|
|
|
Assert.Equal(source, actual); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
@ -91,6 +104,7 @@ namespace SixLabors.ImageSharp.Tests.PixelFormats |
|
|
|
// assert
|
|
|
|
Assert.Equal(expected, actual); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Rgba64_FromBgra5551() |
|
|
|
@ -108,5 +122,172 @@ namespace SixLabors.ImageSharp.Tests.PixelFormats |
|
|
|
Assert.Equal(expected, rgba.B); |
|
|
|
Assert.Equal(expected, rgba.A); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Equality_WhenTrue() |
|
|
|
{ |
|
|
|
Rgba64 c1 = new Rgba64(100, 2000, 3000, 40000); |
|
|
|
Rgba64 c2 = new Rgba64(100, 2000, 3000, 40000); |
|
|
|
|
|
|
|
Assert.True(c1.Equals(c2)); |
|
|
|
Assert.True(c1.GetHashCode() == c2.GetHashCode()); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Equality_WhenFalse() |
|
|
|
{ |
|
|
|
Rgba64 c1 = new Rgba64(100, 2000, 3000, 40000); |
|
|
|
Rgba64 c2 = new Rgba64(101, 2000, 3000, 40000); |
|
|
|
Rgba64 c3 = new Rgba64(100, 2000, 3000, 40001); |
|
|
|
|
|
|
|
Assert.False(c1.Equals(c2)); |
|
|
|
Assert.False(c2.Equals(c3)); |
|
|
|
Assert.False(c3.Equals(c1)); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Rgba64_FromRgba32() |
|
|
|
{ |
|
|
|
var source = new Rgba32(20, 38, 76, 115); |
|
|
|
var expected = new Rgba64(5140, 9766, 19532, 29555); |
|
|
|
|
|
|
|
Rgba64 actual = default; |
|
|
|
actual.FromRgba32(source); |
|
|
|
|
|
|
|
Assert.Equal(expected, actual); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ConstructFrom_Rgba32() |
|
|
|
{ |
|
|
|
var expected = new Rgba64(5140, 9766, 19532, 29555); |
|
|
|
var source = new Rgba32(20, 38, 76, 115); |
|
|
|
Rgba64 actual = new Rgba64(source); |
|
|
|
|
|
|
|
Assert.Equal(expected, actual); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ConstructFrom_Bgra32() |
|
|
|
{ |
|
|
|
var expected = new Rgba64(5140, 9766, 19532, 29555); |
|
|
|
var source = new Bgra32(20, 38, 76, 115); |
|
|
|
Rgba64 actual = new Rgba64(source); |
|
|
|
|
|
|
|
Assert.Equal(expected, actual); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ConstructFrom_Argb32() |
|
|
|
{ |
|
|
|
var expected = new Rgba64(5140, 9766, 19532, 29555); |
|
|
|
var source = new Argb32(20, 38, 76, 115); |
|
|
|
Rgba64 actual = new Rgba64(source); |
|
|
|
|
|
|
|
Assert.Equal(expected, actual); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ConstructFrom_Rgb24() |
|
|
|
{ |
|
|
|
var expected = new Rgba64(5140, 9766, 19532, ushort.MaxValue); |
|
|
|
var source = new Rgb24(20, 38, 76); |
|
|
|
Rgba64 actual = new Rgba64(source); |
|
|
|
|
|
|
|
Assert.Equal(expected, actual); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ConstructFrom_Bgr24() |
|
|
|
{ |
|
|
|
var expected = new Rgba64(5140, 9766, 19532, ushort.MaxValue); |
|
|
|
var source = new Bgr24(20, 38, 76); |
|
|
|
Rgba64 actual = new Rgba64(source); |
|
|
|
|
|
|
|
Assert.Equal(expected, actual); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ConstructFrom_Vector4() |
|
|
|
{ |
|
|
|
Vector4 source = new Vector4(0f, 0.2f, 0.5f, 1f); |
|
|
|
Rgba64 expected = default; |
|
|
|
expected.FromScaledVector4(source); |
|
|
|
|
|
|
|
Rgba64 actual = new Rgba64(source); |
|
|
|
|
|
|
|
Assert.Equal(expected, actual); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ToRgba32_Retval() |
|
|
|
{ |
|
|
|
// arrange
|
|
|
|
var source = new Rgba64(5140, 9766, 19532, 29555); |
|
|
|
var expected = new Rgba32(20, 38, 76, 115); |
|
|
|
|
|
|
|
// act
|
|
|
|
var actual = source.ToRgba32(); |
|
|
|
|
|
|
|
// assert
|
|
|
|
Assert.Equal(expected, actual); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ToBgra32_Retval() |
|
|
|
{ |
|
|
|
// arrange
|
|
|
|
var source = new Rgba64(5140, 9766, 19532, 29555); |
|
|
|
var expected = new Bgra32(20, 38, 76, 115); |
|
|
|
|
|
|
|
// act
|
|
|
|
var actual = source.ToBgra32(); |
|
|
|
|
|
|
|
// assert
|
|
|
|
Assert.Equal(expected, actual); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ToArgb32_Retval() |
|
|
|
{ |
|
|
|
// arrange
|
|
|
|
var source = new Rgba64(5140, 9766, 19532, 29555); |
|
|
|
var expected = new Argb32(20, 38, 76, 115); |
|
|
|
|
|
|
|
// act
|
|
|
|
var actual = source.ToArgb32(); |
|
|
|
|
|
|
|
// assert
|
|
|
|
Assert.Equal(expected, actual); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ToRgb24_Retval() |
|
|
|
{ |
|
|
|
// arrange
|
|
|
|
var source = new Rgba64(5140, 9766, 19532, 29555); |
|
|
|
var expected = new Rgb24(20, 38, 76); |
|
|
|
|
|
|
|
// act
|
|
|
|
var actual = source.ToRgb24(); |
|
|
|
|
|
|
|
// assert
|
|
|
|
Assert.Equal(expected, actual); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ToBgr24_Retval() |
|
|
|
{ |
|
|
|
// arrange
|
|
|
|
var source = new Rgba64(5140, 9766, 19532, 29555); |
|
|
|
var expected = new Bgr24(20, 38, 76); |
|
|
|
|
|
|
|
// act
|
|
|
|
var actual = source.ToBgr24(); |
|
|
|
|
|
|
|
// assert
|
|
|
|
Assert.Equal(expected, actual); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|