diff options
author | Brian Fraser <fraserbn@gmail.com> | 2011-07-06 10:41:10 -0300 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-10-06 13:01:10 -0700 |
commit | 204e6232679d0d412347fddd9e5bd0e529da73d5 (patch) | |
tree | f277f72f11f914e9b6c9874e5e48c22d56ba27a1 /t/mro/isa_c3_utf8.t | |
parent | a00b390b6689672af8817e28321f92e70369c0d4 (diff) | |
download | perl-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.t | 71 |
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); + } +} |