1#!/usr/bin/perl 2 3use strict; 4use warnings; 5 6use Test::More tests => 2; 7 8BEGIN { 9 use_ok('Class::C3::XS'); 10} 11 12=pod 13 14 15This example is take from: http://www.python.org/2.3/mro.html 16 17"My second example" 18class O: pass 19class F(O): pass 20class E(O): pass 21class D(O): pass 22class C(D,F): pass 23class B(E,D): pass 24class A(B,C): pass 25 26 6 27 --- 28Level 3 | O | 29 / --- \ 30 / | \ 31 / | \ 32 / | \ 33 --- --- --- 34Level 2 2 | E | 4 | D | | F | 5 35 --- --- --- 36 \ / \ / 37 \ / \ / 38 \ / \ / 39 --- --- 40Level 1 1 | B | | C | 3 41 --- --- 42 \ / 43 \ / 44 --- 45Level 0 0 | A | 46 --- 47 48>>> A.mro() 49(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.E'>, 50<class '__main__.C'>, <class '__main__.D'>, <class '__main__.F'>, 51<type 'object'>) 52 53=cut 54 55{ 56 package Test::O; 57 our @ISA = qw//; 58 59 package Test::F; 60 use base 'Test::O'; 61 62 package Test::E; 63 use base 'Test::O'; 64 65 package Test::D; 66 use base 'Test::O'; 67 68 package Test::C; 69 use base ('Test::D', 'Test::F'); 70 71 package Test::B; 72 use base ('Test::E', 'Test::D'); 73 74 package Test::A; 75 use base ('Test::B', 'Test::C'); 76} 77 78is_deeply( 79 [ Class::C3::XS::calculateMRO('Test::A') ], 80 [ qw(Test::A Test::B Test::E Test::C Test::D Test::F Test::O) ], 81 '... got the right MRO for Test::A'); 82