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

use Test::More;
use MongoDB;


my %valid = (
    "abc123"           => 1,
    "\xc0\x81"         => 0,
    "\xc1\xa0"         => 0,
    "\xc2\x81"         => 1,
    "\xdf\x80"         => 1,
    "\xdf\xc0"         => 0,
    "\xe0\x80"         => 0,
    "\xe0\x81\x80"     => 0,
    "\xe0\xa0\x80"     => 1,
    "\xed\xa0\x80"     => 0,
    "\xee\x81\x81"     => 1,
    "\xe9a"            => 0,
    "\xf0\x90\xbe\xbf" => 1,
    "\xf2\x79\x80\x80" => 0,
    "\xf4\x8f\xbf\x80" => 1,
);


for my $k (sort keys %valid) {
    my $bytes  = pack('C*', unpack('C*', $k));
    my $isUTF8 = MongoDB::_test_is_utf8($bytes);
    my $hex    = join ' ', map { sprintf( "%x", ord($_) ) } (split(//,$bytes));
    my $vStr   = ($valid{$k}) ? 'valid' : 'invalid'; 
    is( $isUTF8, $valid{$k}, "utf8-test: $hex ($vStr)" );
}

done_testing();