X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F004_advanced_methods.t;h=f5983827571eb44aa0a9c205a97e3d64a44d7b6f;hb=0156915cde1934bb6fd67d3a2c9930de45a86c05;hp=7ae901912950c081825bf435553e0c277519e990;hpb=222860635b059db73389c69475bccc62dfa753a4;p=gitmo%2FClass-MOP.git diff --git a/t/004_advanced_methods.t b/t/004_advanced_methods.t index 7ae9019..f598382 100644 --- a/t/004_advanced_methods.t +++ b/t/004_advanced_methods.t @@ -1,15 +1,11 @@ -#!/usr/bin/perl - use strict; use warnings; -use Test::More tests => 9; +use Test::More tests => 11; use Test::Exception; -BEGIN { - use_ok('Class::MOP'); - use_ok('Class::MOP::Class'); -} +use Class::MOP; +use Class::MOP::Class; =pod @@ -53,127 +49,63 @@ A more real-world example would be a nice addition :) sub foobarbaz { 'Foo::Bar::Baz::foobarbaz' } } +ok(!defined(Class::MOP::Class->initialize('Foo')->find_next_method_by_name('BUILD')), + '... Foo::BUILD has not next method'); + +is(Class::MOP::Class->initialize('Bar')->find_next_method_by_name('BUILD'), + Class::MOP::Class->initialize('Foo')->get_method('BUILD'), + '... Bar::BUILD does have a next method'); + +is(Class::MOP::Class->initialize('Baz')->find_next_method_by_name('BUILD'), + Class::MOP::Class->initialize('Bar')->get_method('BUILD'), + '... Baz->BUILD does have a next method'); + +is(Class::MOP::Class->initialize('Foo::Bar')->find_next_method_by_name('BUILD'), + Class::MOP::Class->initialize('Foo')->get_method('BUILD'), + '... Foo::Bar->BUILD does have a next method'); + +is(Class::MOP::Class->initialize('Foo::Bar::Baz')->find_next_method_by_name('BUILD'), + Class::MOP::Class->initialize('Foo')->get_method('BUILD'), + '... Foo::Bar::Baz->BUILD does have a next method'); + is_deeply( - [ sort { $a->{name} cmp $b->{name} } Class::MOP::Class->initialize('Foo')->compute_all_applicable_methods() ], + [ sort { $a->{name} cmp $b->{name} } Class::MOP::Class->initialize('Foo')->get_all_methods() ], [ - { - name => 'BUILD', - class => 'Foo', - code => \&Foo::BUILD - }, - { - name => 'foo', - class => 'Foo', - code => \&Foo::foo - }, + Class::MOP::Class->initialize('Foo')->get_method('BUILD') , + Class::MOP::Class->initialize('Foo')->get_method('foo'), ], '... got the right list of applicable methods for Foo'); is_deeply( - [ sort { $a->{name} cmp $b->{name} } Class::MOP::Class->initialize('Bar')->compute_all_applicable_methods() ], + [ sort { $a->{name} cmp $b->{name} } Class::MOP::Class->initialize('Bar')->get_all_methods() ], [ - { - name => 'BUILD', - class => 'Bar', - code => \&Bar::BUILD - }, - { - name => 'bar', - class => 'Bar', - code => \&Bar::bar - }, - { - name => 'foo', - class => 'Foo', - code => \&Foo::foo - }, + Class::MOP::Class->initialize('Bar')->get_method('BUILD'), + Class::MOP::Class->initialize('Bar')->get_method('bar'), + Class::MOP::Class->initialize('Foo')->get_method('foo'), ], '... got the right list of applicable methods for Bar'); is_deeply( - [ sort { $a->{name} cmp $b->{name} } Class::MOP::Class->initialize('Baz')->compute_all_applicable_methods() ], + [ sort { $a->{name} cmp $b->{name} } Class::MOP::Class->initialize('Baz')->get_all_methods() ], [ - { - name => 'BUILD', - class => 'Bar', - code => \&Bar::BUILD - }, - { - name => 'bar', - class => 'Bar', - code => \&Bar::bar - }, - { - name => 'baz', - class => 'Baz', - code => \&Baz::baz - }, - { - name => 'foo', - class => 'Baz', - code => \&Baz::foo - }, + Class::MOP::Class->initialize('Bar')->get_method('BUILD'), + Class::MOP::Class->initialize('Bar')->get_method('bar'), + Class::MOP::Class->initialize('Baz')->get_method('baz'), + Class::MOP::Class->initialize('Baz')->get_method('foo'), ], '... got the right list of applicable methods for Baz'); is_deeply( - [ sort { $a->{name} cmp $b->{name} } Class::MOP::Class->initialize('Foo::Bar')->compute_all_applicable_methods() ], + [ sort { $a->{name} cmp $b->{name} } Class::MOP::Class->initialize('Foo::Bar')->get_all_methods() ], [ - { - name => 'BUILD', - class => 'Foo::Bar', - code => \&Foo::Bar::BUILD - }, - { - name => 'bar', - class => 'Bar', - code => \&Bar::bar - }, - { - name => 'foo', - class => 'Foo', - code => \&Foo::foo - }, - { - name => 'foobar', - class => 'Foo::Bar', - code => \&Foo::Bar::foobar - }, + Class::MOP::Class->initialize('Foo::Bar')->get_method('BUILD'), + Class::MOP::Class->initialize('Bar')->get_method('bar'), + Class::MOP::Class->initialize('Foo')->get_method('foo'), + Class::MOP::Class->initialize('Foo::Bar')->get_method('foobar'), ], '... got the right list of applicable methods for Foo::Bar'); -is_deeply( - [ sort { $a->{name} cmp $b->{name} } Class::MOP::Class->initialize('Foo::Bar::Baz')->compute_all_applicable_methods() ], - [ - { - name => 'BUILD', - class => 'Foo::Bar::Baz', - code => \&Foo::Bar::Baz::BUILD - }, - { - name => 'bar', - class => 'Foo::Bar::Baz', - code => \&Foo::Bar::Baz::bar - }, - { - name => 'baz', - class => 'Baz', - code => \&Baz::baz - }, - { - name => 'foo', - class => 'Foo', - code => \&Foo::foo - }, - { - name => 'foobarbaz', - class => 'Foo::Bar::Baz', - code => \&Foo::Bar::Baz::foobarbaz - }, - ], - '... got the right list of applicable methods for Foo::Bar::Baz'); - ## find_all_methods_by_name is_deeply( @@ -182,17 +114,17 @@ is_deeply( { name => 'BUILD', class => 'Foo::Bar', - code => \&Foo::Bar::BUILD + code => Class::MOP::Class->initialize('Foo::Bar')->get_method('BUILD') }, { name => 'BUILD', class => 'Foo', - code => \&Foo::BUILD + code => Class::MOP::Class->initialize('Foo')->get_method('BUILD') }, { name => 'BUILD', class => 'Bar', - code => \&Bar::BUILD + code => Class::MOP::Class->initialize('Bar')->get_method('BUILD') } ], '... got the right list of BUILD methods for Foo::Bar'); @@ -203,17 +135,17 @@ is_deeply( { name => 'BUILD', class => 'Foo::Bar::Baz', - code => \&Foo::Bar::Baz::BUILD + code => Class::MOP::Class->initialize('Foo::Bar::Baz')->get_method('BUILD') }, { name => 'BUILD', class => 'Foo', - code => \&Foo::BUILD + code => Class::MOP::Class->initialize('Foo')->get_method('BUILD') }, { name => 'BUILD', class => 'Bar', - code => \&Bar::BUILD + code => Class::MOP::Class->initialize('Bar')->get_method('BUILD') }, ], - '... got the right list of BUILD methods for Foo::Bar::Baz'); \ No newline at end of file + '... got the right list of BUILD methods for Foo::Bar::Baz');