mirror of https://github.com/SixLabors/ImageSharp
1 changed files with 168 additions and 0 deletions
@ -0,0 +1,168 @@ |
|||
// Copyright (c) Six Labors and contributors.
|
|||
// Licensed under the Apache License, Version 2.0.
|
|||
|
|||
using System.Numerics; |
|||
using SixLabors.ImageSharp.PixelFormats; |
|||
using Xunit; |
|||
|
|||
namespace SixLabors.ImageSharp.Tests.PixelFormats |
|||
{ |
|||
public class La32Tests |
|||
{ |
|||
[Fact] |
|||
public void AreEqual() |
|||
{ |
|||
var color1 = new La32(3000, 100); |
|||
var color2 = new La32(3000, 100); |
|||
|
|||
Assert.Equal(color1, color2); |
|||
} |
|||
|
|||
[Fact] |
|||
public void AreNotEqual() |
|||
{ |
|||
var color1 = new La32(12345, 100); |
|||
var color2 = new La32(54321, 100); |
|||
|
|||
Assert.NotEqual(color1, color2); |
|||
} |
|||
|
|||
[Theory] |
|||
[InlineData(0, 0)] |
|||
[InlineData(65535, 4294967295)] |
|||
[InlineData(32767, 2147450879)] |
|||
[InlineData(42, 2752554)] |
|||
public void La32_PackedValue_EqualsInput(ushort input, uint packed) |
|||
=> Assert.Equal(packed, new La32(input, input).PackedValue); |
|||
|
|||
[Fact] |
|||
public void La32_FromScaledVector4() |
|||
{ |
|||
// Arrange
|
|||
La32 gray = default; |
|||
const ushort expected = 32767; |
|||
Vector4 scaled = new La32(expected, expected).ToScaledVector4(); |
|||
|
|||
// Act
|
|||
gray.FromScaledVector4(scaled); |
|||
ushort actual = gray.L; |
|||
ushort actualA = gray.A; |
|||
|
|||
// Assert
|
|||
Assert.Equal(expected, actual); |
|||
Assert.Equal(expected, actualA); |
|||
} |
|||
|
|||
[Theory] |
|||
[InlineData(0)] |
|||
[InlineData(65535)] |
|||
[InlineData(32767)] |
|||
public void La32_ToScaledVector4(ushort input) |
|||
{ |
|||
// Arrange
|
|||
var gray = new La32(input, input); |
|||
|
|||
// Act
|
|||
Vector4 actual = gray.ToScaledVector4(); |
|||
|
|||
// Assert
|
|||
float vectorInput = input / 65535F; |
|||
Assert.Equal(vectorInput, actual.X); |
|||
Assert.Equal(vectorInput, actual.Y); |
|||
Assert.Equal(vectorInput, actual.Z); |
|||
Assert.Equal(vectorInput, actual.W); |
|||
} |
|||
|
|||
[Fact] |
|||
public void La32_FromVector4() |
|||
{ |
|||
// Arrange
|
|||
La32 gray = default; |
|||
const ushort expected = 32767; |
|||
var vector = new La32(expected, expected).ToVector4(); |
|||
|
|||
// Act
|
|||
gray.FromVector4(vector); |
|||
ushort actual = gray.L; |
|||
ushort actualA = gray.A; |
|||
|
|||
// Assert
|
|||
Assert.Equal(expected, actual); |
|||
Assert.Equal(expected, actualA); |
|||
} |
|||
|
|||
[Theory] |
|||
[InlineData(0)] |
|||
[InlineData(65535)] |
|||
[InlineData(32767)] |
|||
public void La32_ToVector4(ushort input) |
|||
{ |
|||
// Arrange
|
|||
var gray = new La32(input, input); |
|||
|
|||
// Act
|
|||
var actual = gray.ToVector4(); |
|||
|
|||
// Assert
|
|||
float vectorInput = input / 65535F; |
|||
Assert.Equal(vectorInput, actual.X); |
|||
Assert.Equal(vectorInput, actual.Y); |
|||
Assert.Equal(vectorInput, actual.Z); |
|||
Assert.Equal(vectorInput, actual.W); |
|||
} |
|||
|
|||
[Fact] |
|||
public void La32_FromRgba32() |
|||
{ |
|||
// Arrange
|
|||
La32 gray = default; |
|||
const byte rgb = 128; |
|||
ushort scaledRgb = ImageMaths.UpscaleFrom8BitTo16Bit(rgb); |
|||
ushort expected = ImageMaths.Get16BitBT709Luminance(scaledRgb, scaledRgb, scaledRgb); |
|||
|
|||
// Act
|
|||
gray.FromRgba32(new Rgba32(rgb, rgb, rgb)); |
|||
ushort actual = gray.L; |
|||
|
|||
// Assert
|
|||
Assert.Equal(expected, actual); |
|||
Assert.Equal(ushort.MaxValue, gray.A); |
|||
} |
|||
|
|||
[Theory] |
|||
[InlineData(0)] |
|||
[InlineData(65535)] |
|||
[InlineData(8100)] |
|||
public void La32_ToRgba32(ushort input) |
|||
{ |
|||
// Arrange
|
|||
ushort expected = ImageMaths.DownScaleFrom16BitTo8Bit(input); |
|||
var gray = new La32(input, ushort.MaxValue); |
|||
|
|||
// Act
|
|||
Rgba32 actual = default; |
|||
gray.ToRgba32(ref actual); |
|||
|
|||
// Assert
|
|||
Assert.Equal(expected, actual.R); |
|||
Assert.Equal(expected, actual.G); |
|||
Assert.Equal(expected, actual.B); |
|||
Assert.Equal(byte.MaxValue, actual.A); |
|||
} |
|||
|
|||
[Fact] |
|||
public void La32_FromBgra5551() |
|||
{ |
|||
// arrange
|
|||
var gray = default(La32); |
|||
ushort expected = ushort.MaxValue; |
|||
|
|||
// act
|
|||
gray.FromBgra5551(new Bgra5551(1.0f, 1.0f, 1.0f, 1.0f)); |
|||
|
|||
// assert
|
|||
Assert.Equal(expected, gray.L); |
|||
Assert.Equal(expected, gray.A); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue