46 lines
1.2 KiB
Perl
46 lines
1.2 KiB
Perl
|
use Test2::V0;
|
||
|
use Path::Tiny;
|
||
|
|
||
|
require './part1.pm';
|
||
|
require './part2.pl';
|
||
|
|
||
|
my $sample = <<'END';
|
||
|
light red bags contain 1 bright white bag, 2 muted yellow bags.
|
||
|
dark orange bags contain 3 bright white bags, 4 muted yellow bags.
|
||
|
bright white bags contain 1 shiny gold bag.
|
||
|
muted yellow bags contain 2 shiny gold bags, 9 faded blue bags.
|
||
|
shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags.
|
||
|
dark olive bags contain 3 faded blue bags, 4 dotted black bags.
|
||
|
vibrant plum bags contain 5 faded blue bags, 6 dotted black bags.
|
||
|
faded blue bags contain no other bags.
|
||
|
dotted black bags contain no other bags.
|
||
|
END
|
||
|
|
||
|
subtest part1 => sub {
|
||
|
is part1::solution(split "\n", $sample) => 4;
|
||
|
|
||
|
is part1::solution(path('input')->lines) => 278;
|
||
|
};
|
||
|
|
||
|
subtest part2 => sub {
|
||
|
is part2::solution( sample2() ) => 126, 'example';
|
||
|
|
||
|
is part2::solution(path('input')->lines) => 45157, 'solution';
|
||
|
};
|
||
|
|
||
|
|
||
|
done_testing();
|
||
|
|
||
|
sub sample2 {
|
||
|
return split "\n", <<'END';
|
||
|
shiny gold bags contain 2 dark red bags.
|
||
|
dark red bags contain 2 dark orange bags.
|
||
|
dark orange bags contain 2 dark yellow bags.
|
||
|
dark yellow bags contain 2 dark green bags.
|
||
|
dark green bags contain 2 dark blue bags.
|
||
|
dark blue bags contain 2 dark violet bags.
|
||
|
dark violet bags contain no other bags.
|
||
|
END
|
||
|
}
|
||
|
|