The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use lib 'lib';
use Test::More tests => 28;
use strict;
use warnings;
use Data::Dumper;

$| = 1;

use_ok('OCR::PerfectCR');

my $pcr = OCR::PerfectCR->new();
isa_ok($pcr, 'OCR::PerfectCR');

can_ok($pcr, 'recognise');
can_ok($pcr, 'recognize');

use_ok('GD');

$pcr->load_charmap_file('t/charmap');

my $testimage = GD::Image->new('t/1.png');
isa_ok($testimage, 'GD::Image');

my $parsed = $pcr->recognize($testimage);
is($parsed, " about it.", "Scalar context recognize (1)");

$parsed = $pcr->recognize(GD::Image->new('t/2.png'));
is($parsed, "about it.", "Scalar context recognize (2)");

my @parsed = $pcr->recognize($testimage);
my $d= Dumper \@parsed;
$d =~ s/\n/\n# /;
$d = "# $d";
print $d;
is(0+@parsed, 10, 'List parse correct length');

my @str = split //, ' about it.';
for (0..$#parsed) {
  is($parsed[$_]{str}, $str[$_], "List parse char $_ has correct str.");
  if ($parsed[$_]{str} ne ' ') {
    is($parsed[$_]{color}, 180, "List parse char $_ has correct color.");
  }
}

$pcr->save_charmap_file('t/charmap2');

my $a = do {local (@ARGV, $/) = 't/charmap'; <>};
my $b = do {local (@ARGV, $/) = 't/charmap2'; <>};

is($a, $b, "Load-save charmap cycle non-lossy");