From 5b374dad36b047223c5d0c1ef16a635d2fee1bd7 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Tue, 3 Dec 2024 22:27:47 +1000 Subject: [PATCH] Fix IccClut test setup and calculator guards --- .../Icc/Calculators/ClutCalculator.cs | 6 +- .../Conversion/IccConversionDataClut.cs | 74 +++++++++---------- 2 files changed, 37 insertions(+), 43 deletions(-) diff --git a/src/ImageSharp/ColorProfiles/Icc/Calculators/ClutCalculator.cs b/src/ImageSharp/ColorProfiles/Icc/Calculators/ClutCalculator.cs index d809c26c6..e14a4dde6 100644 --- a/src/ImageSharp/ColorProfiles/Icc/Calculators/ClutCalculator.cs +++ b/src/ImageSharp/ColorProfiles/Icc/Calculators/ClutCalculator.cs @@ -40,8 +40,8 @@ internal class ClutCalculator : IVector4Calculator public ClutCalculator(IccClut clut) { Guard.NotNull(clut, nameof(clut)); - Guard.MustBeGreaterThan(clut.InputChannelCount, 1, nameof(clut.InputChannelCount)); - Guard.MustBeGreaterThan(clut.OutputChannelCount, 1, nameof(clut.OutputChannelCount)); + Guard.MustBeGreaterThan(clut.InputChannelCount, 0, nameof(clut.InputChannelCount)); + Guard.MustBeGreaterThan(clut.OutputChannelCount, 0, nameof(clut.OutputChannelCount)); this.inputCount = clut.InputChannelCount; this.outputCount = clut.OutputChannelCount; @@ -72,7 +72,7 @@ internal class ClutCalculator : IVector4Calculator public unsafe Vector4 Calculate(Vector4 value) { - Vector4 result = value; + Vector4 result = default; switch (this.inputCount) { case 1: diff --git a/tests/ImageSharp.Tests/TestDataIcc/Conversion/IccConversionDataClut.cs b/tests/ImageSharp.Tests/TestDataIcc/Conversion/IccConversionDataClut.cs index bcf87c5fc..5733b1943 100644 --- a/tests/ImageSharp.Tests/TestDataIcc/Conversion/IccConversionDataClut.cs +++ b/tests/ImageSharp.Tests/TestDataIcc/Conversion/IccConversionDataClut.cs @@ -9,8 +9,7 @@ namespace SixLabors.ImageSharp.Tests.TestDataIcc.Conversion; public class IccConversionDataClut { internal static IccClut Clut3x2 = new( - new[] - { + [ 0.1f, 0.1f, 0.2f, 0.2f, 0.3f, 0.3f, @@ -46,14 +45,13 @@ public class IccConversionDataClut 0.18f, 0.18f, 0.28f, 0.28f, 0.38f, 0.38f, - }, - new byte[] { 3, 3, 3 }, + ], + [3, 3, 3], IccClutDataType.Float, - outputChannelCount: 3); + outputChannelCount: 2); internal static IccClut Clut3x1 = new( - new[] - { + [ 0.10f, 0.20f, 0.30f, @@ -89,14 +87,13 @@ public class IccConversionDataClut 0.18f, 0.28f, 0.38f, - }, - new byte[] { 3, 3, 3 }, + ], + [3, 3, 3], IccClutDataType.Float, - outputChannelCount: 3); + outputChannelCount: 1); internal static IccClut Clut2x2 = new( - new[] - { + [ 0.1f, 0.9f, 0.2f, 0.8f, 0.3f, 0.7f, @@ -108,14 +105,13 @@ public class IccConversionDataClut 0.7f, 0.3f, 0.8f, 0.2f, 0.9f, 0.1f, - }, - new byte[] { 3, 3 }, + ], + [3, 3], IccClutDataType.Float, - outputChannelCount: 3); + outputChannelCount: 2); internal static IccClut Clut2x1 = new( - new[] - { + [ 0.1f, 0.2f, 0.3f, @@ -127,42 +123,40 @@ public class IccConversionDataClut 0.7f, 0.8f, 0.9f, - }, - new byte[] { 3, 3 }, + ], + [3, 3], IccClutDataType.Float, - outputChannelCount: 3); + outputChannelCount: 1); internal static IccClut Clut1x2 = new( - new[] - { + [ 0f, 0.5f, 0.25f, 0.75f, 0.5f, 1f, - }, - new byte[] { 3 }, + ], + [3], IccClutDataType.Float, - outputChannelCount: 3); + outputChannelCount: 2); internal static IccClut Clut1x1 = new( - new[] - { + [ 0f, 0.5f, 1f, - }, - new byte[] { 3 }, + ], + [3], IccClutDataType.Float, - outputChannelCount: 3); + outputChannelCount: 1); public static object[][] ClutConversionTestData = - { - new object[] { Clut3x2, new Vector4(0.75f, 0.75f, 0.75f, 0), new Vector4(0.31f, 0.31f, 0, 0) }, - new object[] { Clut3x1, new Vector4(0.2f, 0.6f, 0.8f, 0), new Vector4(0.276f, 0, 0, 0) }, - new object[] { Clut3x1, new Vector4(0.75f, 0.75f, 0.75f, 0), new Vector4(0.31f, 0, 0, 0) }, - new object[] { Clut2x2, new Vector4(0.2f, 0.6f, 0, 0), new Vector4(0.46f, 0.54f, 0, 0) }, - new object[] { Clut2x2, new Vector4(0.25f, 0.75f, 0, 0), new Vector4(0.4f, 0.6f, 0, 0) }, - new object[] { Clut2x1, new Vector4(0.25f, 0.75f, 0, 0), new Vector4(0.4f, 0, 0, 0) }, - new object[] { Clut1x2, new Vector4(0.25f, 0, 0, 0), new Vector4(0.125f, 0.625f, 0, 0) }, - new object[] { Clut1x1, new Vector4(0.25f, 0, 0, 0), new Vector4(0.25f, 0, 0, 0) }, - }; + [ + [Clut3x2, new Vector4(0.75f, 0.75f, 0.75f, 0), new Vector4(0.31f, 0.31f, 0, 0)], + [Clut3x1, new Vector4(0.2f, 0.6f, 0.8f, 0), new Vector4(0.276f, 0, 0, 0)], + [Clut3x1, new Vector4(0.75f, 0.75f, 0.75f, 0), new Vector4(0.31f, 0, 0, 0)], + [Clut2x2, new Vector4(0.2f, 0.6f, 0, 0), new Vector4(0.46f, 0.54f, 0, 0)], + [Clut2x2, new Vector4(0.25f, 0.75f, 0, 0), new Vector4(0.4f, 0.6f, 0, 0)], + [Clut2x1, new Vector4(0.25f, 0.75f, 0, 0), new Vector4(0.4f, 0, 0, 0)], + [Clut1x2, new Vector4(0.25f, 0, 0, 0), new Vector4(0.125f, 0.625f, 0, 0)], + [Clut1x1, new Vector4(0.25f, 0, 0, 0), new Vector4(0.25f, 0, 0, 0)], + ]; }