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

BEGIN {
    chdir 't' if -d 't';
    @INC = '../lib';
    require './test.pl';
}

use strict;
use warnings;

eval "require 'meta_notation.pm'";
if ($@) {
    fail("Could not find 'meta_notation.pm'");
}
else {

    is(_meta_notation("\007\010\011\c?Z\x{103}"), "^G^H^I^?Z\x{103}");

    if ($::IS_ASCII || $::IS_ASCII) {
        is(_meta_notation("\x{c1}\x{e2}"), 'M-AM-b');
        is(_meta_notation("\x{df}"), 'M-_');
    }
    else {  # EBCDIC platform
        # In the first iteration we are looking for a non-ASCII control; in
        # the second, a regular non-ASCII character.  SPACE marks the end of
        # most controls.  We test each to see that they are properly converted
        # to \x{...}
        foreach my $start (0x20, ord " ") {
            for (my $i = $start; $i < 256; $i++) {
                my $char = chr $i;
                next if $char =~ /[[:ascii:]]/;
                is(_meta_notation($char), sprintf("\\x{%X}", $i));
                last;
            }
        }
    }
}

done_testing();