@use '../../node_modules/sass-true/sass/true' as *;
@use '../../sass/cie/lch';
@use '../../sass/convert';
@use 'sass:meta';
@use 'sass:string';

@include describe('cie/lch') {
  @include describe('normalize') {
    @include it('Strips all units from an LCH value') {
      @include assert-equal(
        lch.normalize(30% 0 300deg),
        30 0 300
      );
    }

    @include it('Converts hue to degrees before normalizing') {
      @include assert-equal(
        lch.normalize(30% 0 0.5turn),
        30 0 180
      );
    }
  }

  @include describe('to-srgb()') {
    @include it('Converts LCH to rgb') {
      @include assert-equal(
        lch.to-srgb(50 50 0),
        convert.LCH_to_sRGB(50 50 0)
      );
    }

    @include it('Optionally returns null for out-of-gamut LCH colors') {
      @include assert-equal(
        lch.to-srgb(80 80 300, $check-gamut: true),
        null
      );
    }
  }

  @include describe('gamut-correct()') {
    @include it('Returns converted sRGB for in-gamut colors') {
      @include assert-equal(
        lch.gamut-correct(30, 50, 300),
        convert.LCH_to_sRGB(30 50 300)
      );
    }

    @include it('Returns corrected sRGB for out-of-gamut colors') {
      @include assert-equal(
        lch.gamut-correct(80, 80, 300),
        [0.8224699758, 0.7397233782, 1.0000048368],
        $inspect: true
      );
    }
  }
}
