File: encoding.t

package info (click to toggle)
libbadger-perl 0.16-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,400 kB
  • sloc: perl: 11,004; makefile: 9
file content (75 lines) | stat: -rw-r--r-- 1,933 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#========================================================================
#
# t/codec/encoding.t
#
# Test the Badger::Codec::encoding module.
#
# Written by Andy Wardley <abw@wardley.org> using code from the TT2 
# t/unicode.t test written by Mark Fowler <mark@twoshortplanks.com>
#
# This is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
#
#========================================================================

use strict;
use warnings;
use lib qw( ./lib ../lib ../../lib );
use Badger::Codec::Encoding;
use Badger::Test 
    tests => 4,
    debug => 'Badger::Codec::Encoding',
    args  => \@ARGV;

use constant Codec => 'Badger::Codec::Encoding';
use Encode qw();
use bytes;

my $uncoded = "Hello World";
my $encoded = Codec->encode($uncoded);      # ASCII by default
is( $encoded, $uncoded, 'ASCII encoding nullop' );

my $decoded = Codec->decode($encoded);
is( $decoded, $uncoded, 'ASCII decoding nullop' );


#-----------------------------------------------------------------------
# test utf8, and various other specific encodings
#-----------------------------------------------------------------------

package Badger::Test::Encoding::utf8;
use Badger::Codecs codec => 'utf8';
use Badger::Test;

our $moose   = "\x{ef}\x{bb}\x{bf}m\x{c3}\x{b8}\x{c3}\x{b8}se\x{e2}\x{80}\x{a6}";
$uncoded = Encode::decode( utf8 => $moose );
$encoded = encode($uncoded);
$decoded = decode($encoded);

is( reasciify($encoded), reasciify($moose), "encoded utf8" );
is( $decoded, $uncoded, "decoded utf8" );


sub reasciify {
    my $string = shift;
    $string = join '', map {
        my $ord = ord($_);
        ($ord > 127 || ($ord < 32 && $ord != 10))
            ? sprintf '\x{%x}', $ord
            : $_
        } split //, $string;
    return $string;
}



__END__

# Local Variables:
# mode: Perl
# perl-indent-level: 4
# indent-tabs-mode: nil
# End:
#
# vim: expandtab shiftwidth=4: