@use '../../node_modules/sass-true/sass/true' as *;
@use '../../sass/convert/extra';

@include describe('convert/extra') {
  @include describe('hueFromColor') {
    @include it('Returns a normalized hsl hue from a Sass color') {
      @include assert-equal(
        extra.hueFromColor(rgb(255, 0, 255)),
        5
      );
    }
  }

  @include describe('rgbToSass') {
    @include it('Converts normalized rgb/a channels to a sass color') {
      @include assert-equal(
        extra.rgbToSass(1 0 1, 0.5),
        rgba(255, 0, 255, 0.5)
      );
    }
  }

  @include describe('sassToRgb') {
    @include it('Extracts normalized rgb values from a Sass color') {
      @include assert-equal(
        extra.sassToRgb(rgba(255, 0, 255, 0.5)),
        (1, 0, 1)
      );
    }
  }

  @include describe('sassToHsl') {
    @include it('Extracts normalized hsl values from a Sass color') {
      @include assert-equal(
        extra.sassToHsl(rgb(255, 0, 255)),
        (5, 1, 0.5)
      );
    }
  }

  @include describe('rgbToHsl()') {
    @include it('Converts rgb to hsl via sass') {
      @include assert-equal(
        extra.rgbToHsl(1 1 1),
        0 0 1
      );

      @include assert-equal(
        extra.rgbToHsl(0 0 0),
        0 0 0
      );

      @include assert-equal(
        extra.rgbToHsl(0.5 0.5 0.5),
        0 0 0.5019607843,
        $inspect: true
      );

      @include assert-equal(
        extra.rgbToHsl(1 0 0),
        0 1 0.5
      );

      @include assert-equal(
        extra.rgbToHsl(0.75 0.75 0),
        1 1 0.3745098039,
        $inspect: true
      );

      @include assert-equal(
        extra.rgbToHsl(0.75 0.25 0.75),
        5 0.4980392157 0.5,
        $inspect: true
      );
    }
  }

  @include describe('rgbToHwb()') {
    @include it('Converts normalized srgb values to normalized hwb') {
      @include assert-equal(
        extra.rgbToHwb(1 0 1),
        5 0 0
      );
    }

    @include it('Uses input format as a template') {
      @include assert-equal(
        extra.rgbToHwb([ 1, 0, 1 ]),
        [ 5, 0, 0 ]
      );
    }
  }

  @include describe('hwbToRgb()') {
    @include it('Converts normal hwb channels to srgb') {
      @include assert-equal(
        extra.hwbToRgb(5 0 0),
        1 0 1
      );
    }
  }

  @include describe('sassToLCH()') {
    @include it('Converts sass colors to LCH format') {
      @include assert-equal(
        extra.sassToLCH(#484268),
        [29.8786112748, 23.6771014858, 294.6544801279],
        $inspect: true
      );
    }
  }

  @include describe('sassToLab()') {
    @include it('Converts sass colors to Lab format') {
      @include assert-equal(
        extra.sassToLab(#484268),
        [29.8786112748, 9.8767882407, -21.5186939385],
        $inspect: true
      );
    }
  }
}
