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})");
                }
            }
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }