This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Unicode-Collate to CPAN version 1.21
[perl5.git] / cpan / Unicode-Collate / t / loc_dsb.t
diff --git a/cpan/Unicode-Collate/t/loc_dsb.t b/cpan/Unicode-Collate/t/loc_dsb.t
new file mode 100644 (file)
index 0000000..25cee28
--- /dev/null
@@ -0,0 +1,137 @@
+
+BEGIN {
+    unless ('A' eq pack('U', 0x41)) {
+       print "1..0 # Unicode::Collate cannot pack a Unicode code point\n";
+       exit 0;
+    }
+    unless (0x41 == unpack('U', 'A')) {
+       print "1..0 # Unicode::Collate cannot get a Unicode code point\n";
+       exit 0;
+    }
+    if ($ENV{PERL_CORE}) {
+       chdir('t') if -d 't';
+       @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+    }
+}
+
+use strict;
+use warnings;
+BEGIN { $| = 1; print "1..87\n"; }
+my $count = 0;
+sub ok ($;$) {
+    my $p = my $r = shift;
+    if (@_) {
+       my $x = shift;
+       $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
+    }
+    print $p ? "ok" : "not ok", ' ', ++$count, "\n";
+}
+
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objDsb = Unicode::Collate::Locale->
+    new(locale => 'DSB', normalization => undef);
+
+ok($objDsb->getlocale, 'dsb');
+
+$objDsb->change(level => 1);
+
+my @prim = (
+    "cz", "c\x{30C}", "c\x{301}", "d", # 5
+    "ez", "e\x{30C}", "f",             # 8
+    "hz", "ch", "i",                   # 11
+    "kz", "l\x{335}", "l",             # 14
+    "nz", "n\x{301}", "o",             # 17
+    "rz", "r\x{301}", "s",             # 20
+    "sz", "s\x{30C}", "s\x{301}", "t", # 24
+    "zz", "z\x{30C}", "z\x{301}", "\x{292}" # EZH
+);
+
+for (my $i = 1; $i < @prim; $i++) {
+    ok($objDsb->lt($prim[$i-1], $prim[$i]));
+}
+
+# 28
+
+$objDsb->change(level => 2);
+
+ok($objDsb->eq("c\x{30C}", "C\x{30C}"));
+ok($objDsb->eq("c\x{301}", "C\x{301}"));
+ok($objDsb->eq("e\x{30C}", "E\x{30C}"));
+ok($objDsb->eq("l\x{335}", "L\x{335}"));
+ok($objDsb->eq("n\x{301}", "N\x{301}"));
+ok($objDsb->eq("r\x{301}", "R\x{301}"));
+ok($objDsb->eq("s\x{30C}", "S\x{30C}"));
+ok($objDsb->eq("s\x{301}", "S\x{301}"));
+ok($objDsb->eq("z\x{30C}", "Z\x{30C}"));
+ok($objDsb->eq("z\x{301}", "Z\x{301}"));
+
+ok($objDsb->eq("ch", "cH"));
+ok($objDsb->eq("cH", "Ch"));
+ok($objDsb->eq("Ch", "CH"));
+
+# 41
+
+$objDsb->change(level => 3);
+
+ok($objDsb->lt("c\x{30C}", "C\x{30C}"));
+ok($objDsb->lt("c\x{301}", "C\x{301}"));
+ok($objDsb->lt("e\x{30C}", "E\x{30C}"));
+ok($objDsb->lt("l\x{335}", "L\x{335}"));
+ok($objDsb->lt("n\x{301}", "N\x{301}"));
+ok($objDsb->lt("r\x{301}", "R\x{301}"));
+ok($objDsb->lt("s\x{30C}", "S\x{30C}"));
+ok($objDsb->lt("s\x{301}", "S\x{301}"));
+ok($objDsb->lt("z\x{30C}", "Z\x{30C}"));
+ok($objDsb->lt("z\x{301}", "Z\x{301}"));
+
+ok($objDsb->lt("ch", "cH"));
+ok($objDsb->lt("cH", "Ch"));
+ok($objDsb->lt("Ch", "CH"));
+
+# 54
+
+ok($objDsb->eq("c\x{30C}", "\x{10D}"));
+ok($objDsb->eq("C\x{30C}", "\x{10C}"));
+ok($objDsb->eq("c\x{301}", "\x{107}"));
+ok($objDsb->eq("c\x{341}", "\x{107}"));
+ok($objDsb->eq("C\x{301}", "\x{106}"));
+ok($objDsb->eq("C\x{341}", "\x{106}"));
+ok($objDsb->eq("e\x{30C}", "\x{11B}"));
+ok($objDsb->eq("E\x{30C}", "\x{11A}"));
+ok($objDsb->eq("l\x{335}", "\x{142}"));
+ok($objDsb->eq("L\x{335}", "\x{141}"));
+ok($objDsb->eq("n\x{301}", "\x{144}"));
+ok($objDsb->eq("n\x{341}", "\x{144}"));
+ok($objDsb->eq("N\x{301}", "\x{143}"));
+ok($objDsb->eq("N\x{341}", "\x{143}"));
+ok($objDsb->eq("r\x{301}", "\x{155}"));
+ok($objDsb->eq("r\x{341}", "\x{155}"));
+ok($objDsb->eq("R\x{301}", "\x{154}"));
+ok($objDsb->eq("R\x{341}", "\x{154}"));
+ok($objDsb->eq("s\x{30C}", "\x{161}"));
+ok($objDsb->eq("S\x{30C}", "\x{160}"));
+ok($objDsb->eq("s\x{301}", "\x{15B}"));
+ok($objDsb->eq("s\x{341}", "\x{15B}"));
+ok($objDsb->eq("S\x{301}", "\x{15A}"));
+ok($objDsb->eq("S\x{341}", "\x{15A}"));
+ok($objDsb->eq("z\x{30C}", "\x{17E}"));
+ok($objDsb->eq("Z\x{30C}", "\x{17D}"));
+ok($objDsb->eq("z\x{301}", "\x{17A}"));
+ok($objDsb->eq("z\x{341}", "\x{17A}"));
+ok($objDsb->eq("Z\x{301}", "\x{179}"));
+ok($objDsb->eq("Z\x{341}", "\x{179}"));
+
+# 84
+
+$objDsb->change(upper_before_lower => 1);
+
+ok($objDsb->gt("ch", "cH"));
+ok($objDsb->gt("cH", "Ch"));
+ok($objDsb->gt("Ch", "CH"));
+
+# 87