File: 010_basic.t

package info (click to toggle)
libunicode-utf8-perl 0.62-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 492 kB
  • sloc: perl: 2,365; sh: 6; makefile: 3
file content (88 lines) | stat: -rwxr-xr-x 2,040 bytes parent folder | download | duplicates (3)
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
76
77
78
79
80
81
82
83
84
85
86
87
88
#!perl

use strict;
use warnings;
use lib 't';

use Test::More  tests => 1366;
use Test::Fatal qw[lives_ok];
use Util        qw[pack_utf8 slurp];

BEGIN {
    use_ok('Unicode::UTF8', qw[ decode_utf8
                                encode_utf8 
                                valid_utf8 ]);
}

for (my $cp = 0x00; $cp < 0x10FFFF; $cp += 0x1000) {
    my $octets = pack_utf8($cp);
    my $string = pack('U', $cp);

    {
        my $name = sprintf 'decode_utf8(<%s>) U+%.4X',
          join(' ', map { sprintf '%.2X', ord $_ } split //, $octets), $cp;

        my $got;
        lives_ok {
            use warnings FATAL => 'utf8';
            $got = decode_utf8($octets);
        } $name;
        is($got, $string, $name);
    }

    {
        my $name = sprintf 'valid_utf8(<%s>) U+%.4X',
          join(' ', map { sprintf '%.2X', ord $_ } split //, $octets), $cp;

        ok(valid_utf8($octets), $name);
    }

    {
        my $name = sprintf 'encode_utf8("\\x{%.4X}") U+%.4X',
          $cp, $cp;

        my $got;
        lives_ok {
            use warnings FATAL => 'utf8';
            $got = encode_utf8($string);
        } $name;
        is($got, $octets, $name);
    }
}

{
    my $octets = do {
        open my $fh, '<:raw', 't/quickbrown.txt'
          or die qq<Could not open 't/quickbrown.txt': '$!'>;
        slurp($fh);
    };

    my $string = do { 
        utf8::decode(my $copy = $octets)
          or die q<Could not decode quickbrown.txt>;
        $copy;
    };

    {
        my $got;
        lives_ok { 
            use warnings FATAL => 'utf8';
            $got = decode_utf8($octets);
        } 'decode_utf8(quickbrown.txt)';
        is($got, $string, 'decode_utf8(quickbrown.txt) result');
    }

    {
        ok(valid_utf8($octets), 'valid_utf8(quickbrown.txt)');
    }

    {
        my $got;
        lives_ok { 
            use warnings FATAL => 'utf8';
            $got = encode_utf8($string);
        } 'encode_utf8(quickbrown.txt)';
        is($got, $octets, 'encode_utf8(quickbrown.txt) result');
    }
}