package Test::Enigmatic; use DAKKAR::p 'test'; sub test_static_map { my ($mapper,$out,$name) = @_; my @in = 'A'..'Z'; my %map;@map{@in}=@$out; for my $c ('A' .. 'Z') { is($mapper->map($c), $map{$c}, "$name on $c"); } } sub test_full_machine { my ($factory,$input,$exp_output) = @_; $input =~ s{\s+}{}g;$input=$input->uc; my $output = $factory->()->map_string($input); note "output: $output"; my $back = $factory->()->map_string($output); note "back: $back"; is($back, $input, 'round tripped'); if ($exp_output) { $exp_output =~ s{\s+}{}g;$exp_output=$exp_output->uc; is($output, $exp_output, 'got expected output'); } }