summaryrefslogtreecommitdiff
path: root/t/mro/isa_c3_utf8.t
diff options
context:
space:
mode:
authorBrian Fraser <fraserbn@gmail.com>2011-07-06 10:41:10 -0300
committerFather Chrysostomos <sprout@cpan.org>2011-10-06 13:01:10 -0700
commit204e6232679d0d412347fddd9e5bd0e529da73d5 (patch)
treef277f72f11f914e9b6c9874e5e48c22d56ba27a1 /t/mro/isa_c3_utf8.t
parenta00b390b6689672af8817e28321f92e70369c0d4 (diff)
downloadperl-204e6232679d0d412347fddd9e5bd0e529da73d5.tar.gz
mro UTF8 cleanup.
This patch also duplicates existing mro tests with copies that use Unicode in identifiers, to test the mro code. Since those tests trigger it, it also fixes a bug in the parsing of *{...}: If the first character inside the braces is a non-ASCII Unicode identifier character, the inside is now implicitly quoted if it is just an identifier (just as it is with ASCII identifiers), instead of being parsed as a bareword that would violate strict subs.
Diffstat (limited to 't/mro/isa_c3_utf8.t')
-rw-r--r--t/mro/isa_c3_utf8.t71
1 files changed, 71 insertions, 0 deletions
diff --git a/t/mro/isa_c3_utf8.t b/t/mro/isa_c3_utf8.t
new file mode 100644
index 0000000000..0e69e04eba
--- /dev/null
+++ b/t/mro/isa_c3_utf8.t
@@ -0,0 +1,71 @@
+#!perl -w
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require "./test.pl";
+}
+
+use strict;
+use utf8;
+use open qw( :utf8 :std );
+
+plan 'no_plan';
+
+# package klonk doesn't have a stash.
+
+package 캎oẃ;
+use mro 'c3';
+
+# No parents
+
+package urḲḵk;
+use mro 'c3';
+
+# 1 parent
+@urḲḵk::ISA = 'kഌoんḰ';
+
+package к;
+use mro 'c3';
+
+# 2 parents
+@urḲḵk::ISA = ('kഌoんḰ', '캎oẃ');
+
+package ṭ화ckэ;
+use mro 'c3';
+
+# No parents, has @ISA
+@ṭ화ckэ::ISA = ();
+
+package Źzzzዟᑉ;
+use mro 'c3';
+
+@Źzzzዟᑉ::ISA = ('ṭ화ckэ', '캎oẃ');
+
+package Ẁ함M;
+use mro 'c3';
+
+@Ẁ함M::ISA = ('캎oẃ', 'ṭ화ckэ');
+
+package main;
+
+my %expect =
+ (
+ kഌoんḰ => [qw(kഌoんḰ)],
+ urḲḵk => [qw(urḲḵk kഌoんḰ 캎oẃ)],
+ 캎oẃ => [qw(캎oẃ)],
+ к => [qw(к)],
+ ṭ화ckэ => [qw(ṭ화ckэ)],
+ Źzzzዟᑉ => [qw(Źzzzዟᑉ ṭ화ckэ 캎oẃ)],
+ Ẁ함M => [qw(Ẁ함M 캎oẃ ṭ화ckэ)],
+ );
+
+foreach my $package (qw(kഌoんḰ urḲḵk 캎oẃ к ṭ화ckэ Źzzzዟᑉ Ẁ함M)) {
+ my $ref = bless [], $package;
+ my $isa = $expect{$package};
+ is("@{mro::get_linear_isa($package)}", "@$isa", "\@ISA for $package");
+
+ foreach my $class ($package, @$isa, 'UNIVERSAL') {
+ isa_ok($ref, $class, $package);
+ }
+}