Commit | Line | Data |
---|---|---|
204e6232 BF |
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'); |