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::X11;
use Convert::Color::RGB8;

unless( eval { Convert::Color::X11->colors; 1 } ) {
   import Test::More skip_all => "Cannot load X11 rgb.txt database";
}

ok( Convert::Color::X11->colors > 0, 'colors is > 0' );

my $red = Convert::Color::X11->new( 'red' );

is( $red->red,   255, 'red red' );
is( $red->green,   0, 'red green' );
is( $red->blue,    0, 'red blue' );

is( $red->name, "red", 'red name' );

is_deeply( [ $red->as_rgb8->rgb8 ], [ 255, 0, 0 ], 'red as_rgb8' );

my $green = Convert::Color->new( 'x11:green' );

is( $green->red,     0, 'green red' );
is( $green->green, 255, 'green green' );
is( $green->blue,    0, 'green blue' );

is( $green->name, "green", 'green name' );

my $white = Convert::Color::RGB8->new( 255, 255, 255 )->as_x11;

# It's not quite guaranteed that this is "white", as some rgb.txt files might
# contain other names with the same value, such as "Gray100"
#   https://rt.cpan.org/Ticket/Display.html?id=66544

isa_ok( $white, "Convert::Color::X11", '$white' );
is_deeply( [ $white->as_rgb8->rgb8 ], [ 255, 255, 255 ], 'white as_rgb8' );

done_testing;