use strict;
use warnings;
-use Test::More tests => 15;
-
-BEGIN {
- use_ok('Class::C3');
-}
+use Test::More tests => 14;
=pod
+This example is take from: http://www.python.org/2.3/mro.html
+
+"My first example"
+class O: pass
+class F(O): pass
+class E(O): pass
+class D(O): pass
+class C(D,F): pass
+class B(D,E): pass
+class A(B,C): pass
+
+
6
---
Level 3 | O | (more general)
use Class::C3;
}
+Class::C3::initialize();
+
is_deeply(
[ Class::C3::calculateMRO('Test::F') ],
[ qw(Test::F Test::O) ],
is(Test::A->C_or_D, 'Test::C', '... got the expected method output');
is(Test::A->can('C_or_D')->(), 'Test::C', '... can got the expected method output');
-is(Test::B->C_or_D, 'Test::D', '... got the expected method output');
-is(Test::B->can('C_or_D')->(), 'Test::D', '... can got the expected method output');
-
is(Test::A->C_or_E, 'Test::C', '... got the expected method output');
is(Test::A->can('C_or_E')->(), 'Test::C', '... can got the expected method output');
-is(Test::B->C_or_E, 'Test::E', '... got the expected method output');
-is(Test::B->can('C_or_E')->(), 'Test::E', '... can got the expected method output');
+# remove the C3
+Class::C3::uninitialize();
+
+is(Test::A->C_or_D, 'Test::D', '... old method resolution has been restored');
+is(Test::A->can('C_or_D')->(), 'Test::D', '... old can(method) resolution has been restored');
-
\ No newline at end of file
+is(Test::A->C_or_E, 'Test::E', '... old method resolution has been restored');
+is(Test::A->can('C_or_E')->(), 'Test::E', '... old can(method) resolution has been restored');
+
+