Browse Source

Add companding tests

af/merge-core
James Jackson-South 8 years ago
parent
commit
72b3aff65c
  1. 4
      src/ImageSharp/ColorSpaces/Conversion/ICompanding.cs
  2. 5
      tests/ImageSharp.Tests/Colorspaces/ColorSpaceEqualityTests.cs
  3. 2
      tests/ImageSharp.Tests/Colorspaces/Conversion/ApproximateColorspaceComparer.cs
  4. 2
      tests/ImageSharp.Tests/Colorspaces/Conversion/CieLabAndCieLchConversionTests.cs
  5. 2
      tests/ImageSharp.Tests/Colorspaces/Conversion/CieLuvAndCieLchuvConversionTests.cs
  6. 2
      tests/ImageSharp.Tests/Colorspaces/Conversion/CieXyzAndCieLabConversionTest.cs
  7. 2
      tests/ImageSharp.Tests/Colorspaces/Conversion/CieXyzAndCieLuvConversionTest.cs
  8. 2
      tests/ImageSharp.Tests/Colorspaces/Conversion/CieXyzAndCieXyyConversionTest.cs
  9. 2
      tests/ImageSharp.Tests/Colorspaces/Conversion/CieXyzAndHunterLabConversionTest.cs
  10. 2
      tests/ImageSharp.Tests/Colorspaces/Conversion/CieXyzAndLmsConversionTest.cs
  11. 2
      tests/ImageSharp.Tests/Colorspaces/Conversion/ColorConverterAdaptTest.cs
  12. 57
      tests/ImageSharp.Tests/Colorspaces/Conversion/CompandingTests.cs
  13. 2
      tests/ImageSharp.Tests/Colorspaces/Conversion/RgbAndCieXyzConversionTest.cs
  14. 2
      tests/ImageSharp.Tests/Colorspaces/Conversion/RgbAndCmykConversionTest.cs
  15. 2
      tests/ImageSharp.Tests/Colorspaces/Conversion/RgbAndHslConversionTest.cs
  16. 2
      tests/ImageSharp.Tests/Colorspaces/Conversion/RgbAndHsvConversionTest.cs
  17. 2
      tests/ImageSharp.Tests/Colorspaces/Conversion/RgbAndYCbCrConversionTest.cs
  18. 2
      tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs

4
src/ImageSharp/ColorSpaces/ICompanding.cs → src/ImageSharp/ColorSpaces/Conversion/ICompanding.cs

@ -1,9 +1,7 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation;
namespace SixLabors.ImageSharp.ColorSpaces
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation
{
/// <summary>
/// Pair of companding functions for <see cref="RgbWorkingSpace"/>.

5
tests/ImageSharp.Tests/Colorspaces/ColorSpaceEqualityTests.cs

@ -1,15 +1,10 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using SixLabors.ImageSharp.ColorSpaces;
using Xunit;
// ReSharper disable InconsistentNaming
// TODO: This needs to be refactored so that it uses a serializable type once the colorspace code is public
namespace SixLabors.ImageSharp.Tests.Colorspaces
{
/// <summary>

2
tests/ImageSharp.Tests/Colorspaces/ApproximateColorspaceComparer.cs → tests/ImageSharp.Tests/Colorspaces/Conversion/ApproximateColorspaceComparer.cs

@ -5,7 +5,7 @@ using System.Collections.Generic;
using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation;
namespace SixLabors.ImageSharp.Tests.Colorspaces
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Allows the approximate comparison of colorspace component values.

2
tests/ImageSharp.Tests/Colorspaces/CieLabAndCieLchConversionTests.cs → tests/ImageSharp.Tests/Colorspaces/Conversion/CieLabAndCieLchConversionTests.cs

@ -6,7 +6,7 @@ using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Tests <see cref="CieLab"/>-<see cref="CieLch"/> conversions.

2
tests/ImageSharp.Tests/Colorspaces/CieLuvAndCieLchuvConversionTests.cs → tests/ImageSharp.Tests/Colorspaces/Conversion/CieLuvAndCieLchuvConversionTests.cs

@ -6,7 +6,7 @@ using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Tests <see cref="CieLuv"/>-<see cref="CieLchuv"/> conversions.

2
tests/ImageSharp.Tests/Colorspaces/CieXyzAndCieLabConversionTest.cs → tests/ImageSharp.Tests/Colorspaces/Conversion/CieXyzAndCieLabConversionTest.cs

@ -6,7 +6,7 @@ using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Tests <see cref="CieXyz"/>-<see cref="CieLab"/> conversions.

2
tests/ImageSharp.Tests/Colorspaces/CieXyzAndCieLuvConversionTest.cs → tests/ImageSharp.Tests/Colorspaces/Conversion/CieXyzAndCieLuvConversionTest.cs

@ -6,7 +6,7 @@ using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Tests <see cref="CieXyz"/>-<see cref="CieLuv"/> conversions.

2
tests/ImageSharp.Tests/Colorspaces/CieXyzAndCieXyyConversionTest.cs → tests/ImageSharp.Tests/Colorspaces/Conversion/CieXyzAndCieXyyConversionTest.cs

@ -6,7 +6,7 @@ using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Tests <see cref="CieXyz"/>-<see cref="CieXyy"/> conversions.

2
tests/ImageSharp.Tests/Colorspaces/CieXyzAndHunterLabConversionTest.cs → tests/ImageSharp.Tests/Colorspaces/Conversion/CieXyzAndHunterLabConversionTest.cs

@ -6,7 +6,7 @@ using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Tests <see cref="CieXyz"/>-<see cref="HunterLab"/> conversions.

2
tests/ImageSharp.Tests/Colorspaces/CieXyzAndLmsConversionTest.cs → tests/ImageSharp.Tests/Colorspaces/Conversion/CieXyzAndLmsConversionTest.cs

@ -6,7 +6,7 @@ using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Tests <see cref="CieXyz"/>-<see cref="Lms"/> conversions.

2
tests/ImageSharp.Tests/Colorspaces/ColorConverterAdaptTest.cs → tests/ImageSharp.Tests/Colorspaces/Conversion/ColorConverterAdaptTest.cs

@ -6,7 +6,7 @@ using SixLabors.ImageSharp.ColorSpaces.Conversion;
using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Tests <see cref="M:ColorSpaceConverter.Adapt" /> methods.

57
tests/ImageSharp.Tests/Colorspaces/Conversion/CompandingTests.cs

@ -0,0 +1,57 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Tests various companding algorithms. Numbers are hand calculated from formulas online.
/// TODO: Oddly the formula for converting to/from Rec 2020 and 709 from Wikipedia seems to cause the value to
/// fail a round trip. They're large spaces so this is a surprise. More reading required!!
/// </summary>
public class CompandingTests
{
private static readonly ApproximateFloatComparer FloatComparer = new ApproximateFloatComparer(.00001F);
[Fact]
public void Rec2020CompandingIsCorrect()
{
CompandingIsCorrectImpl(new Rec2020Companding(), .667F, .4484759F, .3937096F);
}
[Fact]
public void Rec709CompandingIsCorrect()
{
CompandingIsCorrectImpl(new Rec709Companding(), .667F, .4483577F, .3937451F);
}
[Fact]
public void SRgbCompandingIsCorrect()
{
CompandingIsCorrectImpl(new SRgbCompanding(), .667F, .40242353F, .667F);
}
[Fact]
public void GammaCompandingIsCorrect()
{
CompandingIsCorrectImpl(new GammaCompanding(2.2F), .667F, .41027668F, .667F);
}
[Fact]
public void LCompandingIsCorrect()
{
CompandingIsCorrectImpl(new LCompanding(), .667F, .36236193F, .58908917F);
}
private static void CompandingIsCorrectImpl(ICompanding companding, float input, float expanded, float compressed)
{
float e = companding.Expand(input);
float c = companding.Compress(e);
Assert.Equal(expanded, e, FloatComparer);
Assert.Equal(compressed, c, FloatComparer);
}
}
}

2
tests/ImageSharp.Tests/Colorspaces/RgbAndCieXyzConversionTest.cs → tests/ImageSharp.Tests/Colorspaces/Conversion/RgbAndCieXyzConversionTest.cs

@ -6,7 +6,7 @@ using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Tests <see cref="CieXyz"/>-<see cref="CieLab"/> conversions.

2
tests/ImageSharp.Tests/Colorspaces/RgbAndCmykConversionTest.cs → tests/ImageSharp.Tests/Colorspaces/Conversion/RgbAndCmykConversionTest.cs

@ -6,7 +6,7 @@ using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Tests <see cref="Rgb"/>-<see cref="Cmyk"/> conversions.

2
tests/ImageSharp.Tests/Colorspaces/RgbAndHslConversionTest.cs → tests/ImageSharp.Tests/Colorspaces/Conversion/RgbAndHslConversionTest.cs

@ -6,7 +6,7 @@ using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Tests <see cref="Rgb"/>-<see cref="Hsl"/> conversions.

2
tests/ImageSharp.Tests/Colorspaces/RgbAndHsvConversionTest.cs → tests/ImageSharp.Tests/Colorspaces/Conversion/RgbAndHsvConversionTest.cs

@ -6,7 +6,7 @@ using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Tests <see cref="Rgb"/>-<see cref="Hsv"/> conversions.

2
tests/ImageSharp.Tests/Colorspaces/RgbAndYCbCrConversionTest.cs → tests/ImageSharp.Tests/Colorspaces/Conversion/RgbAndYCbCrConversionTest.cs

@ -6,7 +6,7 @@ using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
/// <summary>
/// Tests <see cref="Rgb"/>-<see cref="YCbCr"/> conversions.

2
tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs

@ -8,7 +8,7 @@ using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion;
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder;
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.ColorConverters;
using SixLabors.ImageSharp.Tests.Colorspaces;
using SixLabors.ImageSharp.Tests.Colorspaces.Conversion;
using SixLabors.Memory;
using Xunit;

Loading…
Cancel
Save