# t/003_ord2name.t - verify that primary names are returned correctly
#
# $Id: 003_ord2name.t,v 1.1 2004/02/18 13:56:28 coar Exp $
#
#   CPAN module Convert::ASCIInames
#
#   Copyright 2004 Ken A L Coar
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this package or any files in it except in
#   compliance with the License.  A copy of the License should be
#   included as part of the package; the normative version may be
#   obtained a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
#

use Test::More;
use Convert::ASCIInames;

my $res;
my %names = (
             0x00 => 'NUL',
             0x01 => 'SOH',
             0x02 => 'STX',
             0x03 => 'ETX',
             0x04 => 'EOT',
             0x05 => 'ENQ',
             0x06 => 'ACK',
             0x07 => 'BEL',
             0x08 => 'BS',
             0x09 => 'HT',
             0x0a => 'LF',
             0x0b => 'VT',
             0x0c => 'FF',
             0x0d => 'CR',
             0x0e => 'SO',
             0x0f => 'SI',
             0x10 => 'DLE',
             0x11 => 'DC1',
             0x12 => 'DC2',
             0x13 => 'DC3',
             0x14 => 'DC4',
             0x15 => 'NAK',
             0x16 => 'SYN',
             0x17 => 'ETB',
             0x18 => 'CAN',
             0x19 => 'EM',
             0x1a => 'SUB',
             0x1b => 'ESC',
             0x1c => 'FS',
             0x1d => 'GS',
             0x1e => 'RS',
             0x1f => 'US',
             0x7f => 'DEL',
             0x80 => 'RES1',
             0x81 => 'RES2',
             0x82 => 'RES3',
             0x83 => 'RES4',
             0x84 => 'IND',
             0x85 => 'NEL',
             0x86 => 'SSA',
             0x87 => 'ESA',
             0x88 => 'HTS',
             0x89 => 'HTJ',
             0x8a => 'VTS',
             0x8b => 'PLD',
             0x8c => 'PLU',
             0x8d => 'RI',
             0x8e => 'SS2',
             0x8f => 'SS3',
             0x90 => 'DCS',
             0x91 => 'PU1',
             0x92 => 'PU2',
             0x93 => 'STS',
             0x94 => 'CCH',
             0x95 => 'MW',
             0x96 => 'SPA',
             0x97 => 'EPA',
             0x98 => 'RES5',
             0x99 => 'RES6',
             0x9a => 'RES7',
             0x9b => 'CSI',
             0x9c => 'ST',
             0x9d => 'OSC',
             0x9e => 'PM',
             0x9f => 'APC',
             0x63 => chr(0x63), # Not a special character, fail to actual
            );

plan(tests => 512);
Convert::ASCIInames::Configure(fallthrough => 0);
runem();
Convert::ASCIInames::Configure(fallthrough => 1);
$names{0x20} = 'SP';
runem();

sub runem {
    for (my $ord = 0; $ord < 256; $ord++) {
        my $expected = (defined($names{$ord}) ? $names{$ord} : chr($ord));
        $res = ASCIIname($ord);
        ok($res eq $expected, "ASCIIname($ord) == '$expected'; got '$res'");
    }
}

__END__

#
# Local Variables:
# mode: cperl
# tab-width: 4
# indent-tabs-mode: nil
# End:
#