many docs additions and a new test
[gitmo/Class-MOP.git] / t / 002_class_precedence_list.t
index 686327b..aa0d367 100644 (file)
@@ -84,3 +84,60 @@ is_deeply(
     [ Class::MOP::Class->initialize('My::3::D')->class_precedence_list ], 
     [ 'My::3::D', 'My::3::B', 'My::3::A', 'My::3::C', 'My::3::A', 'My::3::B', 'My::3::A' ], 
     '... My::3::D->meta->class_precedence_list == (D B A C A B A)');
+
+=pod
+
+Test all the class_precedence_lists 
+using Perl's own dispatcher to check 
+against.
+
+=cut
+
+my @CLASS_PRECEDENCE_LIST;
+
+{
+    package Foo;
+    
+    sub CPL { push @CLASS_PRECEDENCE_LIST => 'Foo' }    
+    
+    package Bar;
+    our @ISA = ('Foo');
+    
+    sub CPL { 
+        push @CLASS_PRECEDENCE_LIST => 'Bar';
+        $_[0]->SUPER::CPL();
+    }       
+    
+    package Baz;
+    our @ISA = ('Bar');
+    
+    sub CPL { 
+        push @CLASS_PRECEDENCE_LIST => 'Baz';
+        $_[0]->SUPER::CPL();
+    }       
+    
+    package Foo::Bar;
+    our @ISA = ('Baz');
+    
+    sub CPL { 
+        push @CLASS_PRECEDENCE_LIST => 'Foo::Bar';
+        $_[0]->SUPER::CPL();
+    }    
+    
+    package Foo::Bar::Baz;
+    our @ISA = ('Foo::Bar');
+    
+    sub CPL { 
+        push @CLASS_PRECEDENCE_LIST => 'Foo::Bar::Baz';
+        $_[0]->SUPER::CPL();
+    }    
+
+}
+
+Foo::Bar::Baz->CPL();
+
+is_deeply(
+    [ Class::MOP::Class->initialize('Foo::Bar::Baz')->class_precedence_list ], 
+    [ @CLASS_PRECEDENCE_LIST ], 
+    '... Foo::Bar::Baz->meta->class_precedence_list == @CLASS_PRECEDENCE_LIST');
+