public void Convert_SRGB_to_XYZ_D50(float r, float g, float b, float x, float y, float z) { // Arrange Rgb input = new Rgb(r, g, b); ColorSpaceConverter converter = new ColorSpaceConverter { WhitePoint = Illuminants.D50 }; // Act CieXyz output = converter.ToCieXyz(input); // Assert IEqualityComparer <float> comparer = new ApproximateFloatComparer(0.001f); Assert.Equal(x, output.X, comparer); Assert.Equal(y, output.Y, comparer); Assert.Equal(z, output.Z, comparer); }
public void Convert_XYZ_D50_to_SRGB(float x, float y, float z, float r, float g, float b) { // Arrange CieXyz input = new CieXyz(x, y, z); ColorSpaceConverter converter = new ColorSpaceConverter { WhitePoint = Illuminants.D50, TargetRgbWorkingSpace = RgbWorkingSpaces.SRgb }; // Act Rgb output = converter.ToRgb(input); // Assert IEqualityComparer <float> comparer = new ApproximateFloatComparer(0.001f); Assert.Equal(Rgb.DefaultWorkingSpace, output.WorkingSpace, ApproximateComparer); Assert.Equal(r, output.R, comparer); Assert.Equal(g, output.G, comparer); Assert.Equal(b, output.B, comparer); }
private void VerifyKernelMapContentIsCorrect(string resamplerName, int srcSize, int destSize) { IResampler resampler = TestUtils.GetResampler(resamplerName); var referenceMap = ReferenceKernelMap.Calculate(resampler, destSize, srcSize); var kernelMap = ResizeKernelMap.Calculate(resampler, destSize, srcSize, Configuration.Default.MemoryAllocator); #if DEBUG this.Output.WriteLine(kernelMap.Info); this.Output.WriteLine($"Expected KernelMap:\n{PrintKernelMap(referenceMap)}\n"); this.Output.WriteLine($"Actual KernelMap:\n{PrintKernelMap(kernelMap)}\n"); #endif var comparer = new ApproximateFloatComparer(1e-6f); for (int i = 0; i < kernelMap.DestinationLength; i++) { ResizeKernel kernel = kernelMap.GetKernel(i); ReferenceKernel referenceKernel = referenceMap.GetKernel(i); Assert.True( referenceKernel.Length == kernel.Length, $"referenceKernel.Length != kernel.Length: {referenceKernel.Length} != {kernel.Length}"); Assert.True( referenceKernel.Left == kernel.StartIndex, $"referenceKernel.Left != kernel.Left: {referenceKernel.Left} != {kernel.StartIndex}"); float[] expectedValues = referenceKernel.Values; Span <float> actualValues = kernel.Values; Assert.Equal(expectedValues.Length, actualValues.Length); for (int x = 0; x < expectedValues.Length; x++) { Assert.True( comparer.Equals(expectedValues[x], actualValues[x]), $"{expectedValues[x]} != {actualValues[x]} @ (Row:{i}, Col:{x})"); } } }
internal static bool CompareBlocks(Span <float> a, Span <float> b, float tolerance, out float diff) { var comparer = new ApproximateFloatComparer(tolerance); bool failed = false; diff = 0; for (int i = 0; i < 64; i++) { float expected = a[i]; float actual = b[i]; diff += Math.Abs(expected - actual); if (!comparer.Equals(expected, actual)) { failed = true; } } return(!failed); }
internal void CompareBlocks(Span <float> a, Span <float> b, float tolerance) { var comparer = new ApproximateFloatComparer(tolerance); double totalDifference = 0.0; bool failed = false; for (int i = 0; i < 64; i++) { float expected = a[i]; float actual = b[i]; totalDifference += Math.Abs(expected - actual); if (!comparer.Equals(expected, actual)) { failed = true; this.Output.WriteLine($"Difference too large at index {i}"); } } this.Output.WriteLine("TOTAL DIFF: " + totalDifference); Assert.False(failed); }