File: 090_non_shortest_form.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 (56 lines) | stat: -rwxr-xr-x 1,502 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
#!perl

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

use Test::More tests => 46;
use Encode     qw[_utf8_on];
use Util       qw[throws_ok pack_overlong_utf8];

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

my @tests = (
      0x00,
      0x80,
     0x800,
    0x1000,
);

foreach my $cp (@tests) {
    foreach my $sequence (pack_overlong_utf8($cp)) {
        my $name = sprintf 'decode_utf8(<%s>) non-shortest form representation of U+%.4X',
          join(' ', map { sprintf '%.2X', ord $_ } split //, $sequence), $cp;

        throws_ok {
            use warnings FATAL => 'utf8';
            decode_utf8($sequence);
        } qr/Can't decode ill-formed UTF-8 octet sequence/, $name;
    }
}

foreach my $cp (@tests) {
    foreach my $sequence (pack_overlong_utf8($cp)) {
        my $name = sprintf 'encode_utf8(<%s>) non-shortest form representation of U+%.4X',
          join(' ', map { sprintf '%.2X', ord $_ } split //, $sequence), $cp;

        _utf8_on($sequence);
        throws_ok { 
            encode_utf8($sequence);
        } qr/Can't decode ill-formed UTF-X octet sequence/, $name;
    }
}

foreach my $cp (@tests) {
    foreach my $sequence (pack_overlong_utf8($cp)) {
        my $name = sprintf 'valid_utf8(<%s>) non-shortest form representation of U+%.4X',
          join(' ', map { sprintf '%.2X', ord $_ } split //, $sequence), $cp;

        ok(!valid_utf8($sequence), $name);
    }
}