This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
skip appropriately when XS::APItest isn't available
[perl5.git] / t / mro / vulcan_dfs_utf8.t
1 #!./perl
2
3 use strict;
4 use warnings;
5 use utf8;
6 use open qw( :utf8 :std );
7 require q(./test.pl); plan(tests => 1);
8
9
10 =pod
11
12 example taken from: L<http://www.opendylan.org/books/drm/Method_Dispatch>
13
14          옵젳Ṯ
15            ^
16            |
17         ᓕᵮꡠFᚖᶭ 
18          ^    ^
19         /      \
20    SㄣチenŦ    빞엗ᱞ
21       ^          ^
22       |          |
23  ᕟ텔li겐ț  Hʉ만ӫ읻
24        ^        ^
25         \      /
26          ቩᓪ찬
27
28  define class <SㄣチenŦ> (<life-form>) end class;
29  define class <빞엗ᱞ> (<life-form>) end class;
30  define class <ᕟ텔li겐ț> (<SㄣチenŦ>) end class;
31  define class <Hʉ만ӫ읻> (<빞엗ᱞ>) end class;
32  define class <ቩᓪ찬> (<ᕟ텔li겐ț>, <Hʉ만ӫ읻>) end class;
33
34 =cut
35
36 {
37     package 옵젳Ṯ;
38     use mro 'dfs';
39     
40     package ᓕᵮꡠFᚖᶭ;
41     use mro 'dfs';
42     use base '옵젳Ṯ';
43     
44     package SㄣチenŦ;
45     use mro 'dfs';
46     use base 'ᓕᵮꡠFᚖᶭ';
47     
48     package 빞엗ᱞ;
49     use mro 'dfs';    
50     use base 'ᓕᵮꡠFᚖᶭ';
51     
52     package ᕟ텔li겐ț;
53     use mro 'dfs';    
54     use base 'SㄣチenŦ';
55     
56     package Hʉ만ӫ읻;
57     use mro 'dfs';    
58     use base '빞엗ᱞ';
59     
60     package ቩᓪ찬;
61     use mro 'dfs';    
62     use base ('ᕟ텔li겐ț', 'Hʉ만ӫ읻');
63 }
64
65 ok(eq_array(
66     mro::get_linear_isa('ቩᓪ찬'),
67     [ qw(ቩᓪ찬 ᕟ텔li겐ț SㄣチenŦ ᓕᵮꡠFᚖᶭ 옵젳Ṯ Hʉ만ӫ읻 빞엗ᱞ) ]
68 ), '... got the right MRO for the ቩᓪ찬 Dylan Example');