The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More;
use Test::Fatal;
use Test::File::ShareDir::Dist { 'DateTime-Locale' => 'share' };

use DateTime::Locale;

DateTime::Locale->add_aliases( foo => 'root' );
DateTime::Locale->add_aliases( bar => 'foo' );
DateTime::Locale->add_aliases( baz => 'bar' );
like(
    exception { DateTime::Locale->add_aliases( bar => 'baz' ) },
    qr/loop/,
    'cannot add an alias that would cause a loop'
);

like(
    exception { DateTime::Locale->add_aliases( bar => 'bar' ) },
    qr/Can't alias an id to itself/,
    'alias to itself should fail'
);

my $l = DateTime::Locale->load('baz');
isa_ok( $l, 'DateTime::Locale::FromData' );
is( $l->id, 'root', 'id is root' );

ok(
    DateTime::Locale->remove_alias('baz'),
    'remove_alias should return true'
);

like(
    exception { DateTime::Locale->load('baz') },
    qr/invalid/i,
    'removed alias should be gone'
);

done_testing();