The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#!/usr/bin/perl
use strict;
use Test::More tests => 10;
throws_ok {
Algorithm::Huffman->new();
} qr/undefined counting hash/i,
"->new()";
throws_ok {
Algorithm::Huffman->new(undef);
} qr/undefined counting hash/i,
"->new(undef)";
throws_ok {
Algorithm::Huffman->new(\undef);
} qr/not (a )?hash ref/i,
"->new(\\undef)";
throws_ok {
Algorithm::Huffman->new([]);
} qr/not (a )?hash ref/i,
"->new([])";
throws_ok {
Algorithm::Huffman->new({});
} qr/counting hash must have at least (two|2) keys/i,
"->new({})";
throws_ok {
Algorithm::Huffman->new({a => 1});
} qr/counting hash must have at least (two|2) keys/i,
"->new({a => 1})";
lives_ok {
Algorithm::Huffman->new({a => 1, b => 1});
} "->new({a => 1, b => 1})";
throws_ok {
Algorithm::Huffman->new({a => 1, b => 1, c => 'one'})
} qr/number/i,
"->new({a => 1, b => 1, c => one})";
lives_ok {
Algorithm::Huffman->new({a => 1, b => 1, c => 0})
} "->new({a => 1, b => 1, c => 0})";
throws_ok {
Algorithm::Huffman->new({a => 1, b => 1, c => -1})
} qr/positive/i,
"->new({a => 1, b => 1, c => -1})";