X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F03_MRO.t;fp=t%2F03_MRO.t;h=8ea22fe1451237adbb3fef8b2350feba65cb0989;hb=b9e73af7c2fca0058d6d91827363c07fee7c3867;hp=0000000000000000000000000000000000000000;hpb=b23e9cb9ccfb3d470c72b95818ce57c9b891381b;p=gitmo%2FClass-C3-XS.git diff --git a/t/03_MRO.t b/t/03_MRO.t new file mode 100644 index 0000000..8ea22fe --- /dev/null +++ b/t/03_MRO.t @@ -0,0 +1,81 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Test::More tests => 2; + +BEGIN { + use_ok('Class::C3::XS'); +} + +=pod + + +This example is take from: http://www.python.org/2.3/mro.html + +"My second example" +class O: pass +class F(O): pass +class E(O): pass +class D(O): pass +class C(D,F): pass +class B(E,D): pass +class A(B,C): pass + + 6 + --- +Level 3 | O | + / --- \ + / | \ + / | \ + / | \ + --- --- --- +Level 2 2 | E | 4 | D | | F | 5 + --- --- --- + \ / \ / + \ / \ / + \ / \ / + --- --- +Level 1 1 | B | | C | 3 + --- --- + \ / + \ / + --- +Level 0 0 | A | + --- + +>>> A.mro() +(, , , +, , , +) + +=cut + +{ + package Test::O; + our @ISA = qw//; + + package Test::F; + use base 'Test::O'; + + package Test::E; + use base 'Test::O'; + + package Test::D; + use base 'Test::O'; + + package Test::C; + use base ('Test::D', 'Test::F'); + + package Test::B; + use base ('Test::E', 'Test::D'); + + package Test::A; + use base ('Test::B', 'Test::C'); +} + +is_deeply( + [ Class::C3::XS::calculateMRO('Test::A') ], + [ qw(Test::A Test::B Test::E Test::C Test::D Test::F Test::O) ], + '... got the right MRO for Test::A');