The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

use Test::More;

use Convert::Color::HSL;

my $red = Convert::Color::HSL->new( 0, 1, 0.5 );

is( $red->hue,          0, 'red hue' );
is( $red->saturation,   1, 'red saturation' );
is( $red->lightness,  0.5, 'red lightness' );

is( $red->chroma,       1, 'red chroma' );

is_deeply( [ $red->hsl ], [ 0, 1, 0.5 ], 'red hsl' );

my $green = Convert::Color::HSL->new( 120, 1, 0.5 );

is( $green->hue,        120, 'green hue' );
is( $green->saturation,   1, 'green saturation' );
is( $green->lightness,  0.5, 'green lightness' );

is( $green->chroma,       1, 'green chroma' );

is_deeply( [ $green->hsl ], [ 120, 1, 0.5 ], 'green hsl' );

my $blue = Convert::Color::HSL->new( 240, 1, 0.5 );

is( $blue->hue,        240, 'blue hue' );
is( $blue->saturation,   1, 'blue saturation' );
is( $blue->lightness,  0.5, 'blue lightness' );

is( $blue->chroma,       1, 'blue chroma' );

is_deeply( [ $blue->hsl ], [ 240, 1, 0.5 ], 'blue hsl' );

my $yellow = Convert::Color::HSL->new( '60,1,0.5' );

is( $yellow->hue,         60, 'yellow hue' );
is( $yellow->saturation,   1, 'yellow saturation' );
is( $yellow->lightness,  0.5, 'yellow lightness' );

is( $yellow->chroma,       1, 'yellow chroma' );

is_deeply( [ $yellow->hsl ], [ 60, 1, 0.5 ], 'yellow hsl' );

# "black" is anything at value 0
my $black = Convert::Color::HSL->new( '0,1,0' );

is( $black->saturation,   1, 'black saturation' );
is( $black->lightness,    0, 'black lightness' );

is( $black->chroma,       0, 'black chroma' );

# "white" is anything at value 1
my $white = Convert::Color::HSL->new( '0,1,1' );

is( $white->saturation,   1, 'white saturation' );
is( $white->lightness,    1, 'white lightness' );

is( $white->chroma,       0, 'white chroma' );

done_testing;