xref: /openbsd-src/gnu/usr.bin/perl/dist/Unicode-Normalize/t/tie.t (revision 256a93a44f36679bee503f12e49566c2183f6181)
1
2BEGIN {
3    if ($ENV{PERL_CORE}) {
4        chdir('t') if -d 't';
5        @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
6    }
7}
8
9#########################
10
11BEGIN {
12    use Unicode::Normalize qw(:all);
13
14    unless (exists &Unicode::Normalize::bootstrap or 5.008 <= $]) {
15	print "1..0 # skipped: XSUB, or Perl 5.8.0 or later".
16		" needed for this test\n";
17	print $@;
18	exit;
19    }
20}
21
22use strict;
23use warnings;
24BEGIN { $| = 1; print "1..17\n"; }
25my $count = 0;
26sub ok { Unicode::Normalize::ok(\$count, @_) }
27
28ok(1);
29
30package tiescalar;
31sub TIESCALAR {
32    my ($class, $instance) = @_;
33    return bless \$instance => $class;
34}
35sub FETCH   { return ${$_[0]}++ }
36sub STORE   { return ${$_[0]} = $_[1] }
37sub DESTROY { undef ${$_[0]} }
38
39#########################
40
41package main;
42
43tie my $tie1, 'tiescalar', "123";
44ok(NFD($tie1),  123);
45ok(NFC($tie1),  124);
46ok(NFKD($tie1), 125);
47ok(NFKC($tie1), 126);
48ok(FCD($tie1),  127);
49ok(FCC($tie1),  128);
50
51tie my $tie2, 'tiescalar', "256";
52ok(normalize('NFD',  $tie2), 256);
53ok(normalize('NFC',  $tie2), 257);
54ok(normalize('NFKD', $tie2), 258);
55ok(normalize('NFKC', $tie2), 259);
56ok(normalize('FCD',  $tie2), 260);
57ok(normalize('FCC',  $tie2), 261);
58
59tie my $tie3, 'tiescalar', "315";
60ok(decompose($tie3),         315);
61ok(reorder($tie3),           316);
62ok(compose($tie3),           317);
63ok(composeContiguous($tie3), 318);
64
65