X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F100_BinaryTree_test.t;h=16c1ca66b745a4cc3aaff14ac7e5b72fb0b4d73e;hb=164bf00ba31a0c8e486033690a54fea2112fe207;hp=08e2945a589f87ab9d689032aa69c595f0bd999f;hpb=727919c540c7d73b1abc551d528c827f1b71fc0d;p=gitmo%2FClass-MOP.git diff --git a/t/100_BinaryTree_test.t b/t/100_BinaryTree_test.t index 08e2945..16c1ca6 100644 --- a/t/100_BinaryTree_test.t +++ b/t/100_BinaryTree_test.t @@ -1,19 +1,28 @@ -#!/usr/bin/perl - use strict; use warnings; -use Test::More tests => 68; +use FindBin; +use File::Spec::Functions; -BEGIN { - use_ok('Class::MOP'); - use_ok('t::lib::BinaryTree'); -} +use Test::More tests => 69; +use Test::Exception; + +use Class::MOP; + +use lib catdir($FindBin::Bin, 'lib'); ## ---------------------------------------------------------------------------- ## These are all tests which are derived from the Tree::Binary test suite ## ---------------------------------------------------------------------------- +ok(!Class::MOP::is_class_loaded('BinaryTree'), '... the binary tree class is not loaded'); + +lives_ok { + Class::MOP::load_class('BinaryTree'); +} '... loaded the BinaryTree class without dying'; + +ok(Class::MOP::is_class_loaded('BinaryTree'), '... the binary tree class is now loaded'); + ## ---------------------------------------------------------------------------- ## t/10_Tree_Binary_test.t @@ -63,7 +72,7 @@ can_ok($btree, 'getUID'); { my $UID = $btree->getUID(); - is(("$btree" =~ /\((.*?)\)$/), $UID, '... our UID is derived from the stringified object'); + is(("$btree" =~ /\((.*?)\)$/)[0], $UID, '... our UID is derived from the stringified object'); } can_ok($btree, 'getNodeValue'); @@ -72,33 +81,33 @@ is($btree->getNodeValue(), '/', '... got what we expected'); { can_ok($btree, 'getLeft'); my $left = $btree->getLeft(); - + isa_ok($left, 'BinaryTree'); - + is($left->getNodeValue(), '+', '... got what we expected'); - - can_ok($left, 'getParent'); - + + can_ok($left, 'getParent'); + my $parent = $left->getParent(); isa_ok($parent, 'BinaryTree'); - - is($parent, $btree, '.. got what we expected'); + + is($parent, $btree, '.. got what we expected'); } { can_ok($btree, 'getRight'); my $right = $btree->getRight(); - + isa_ok($right, 'BinaryTree'); - + is($right->getNodeValue(), '*', '... got what we expected'); can_ok($right, 'getParent'); - + my $parent = $right->getParent(); isa_ok($parent, 'BinaryTree'); - - is($parent, $btree, '.. got what we expected'); + + is($parent, $btree, '.. got what we expected'); } ## mutators @@ -118,13 +127,13 @@ is($btree->getNodeValue(), '*', '... got what we expected'); can_ok($btree, 'removeLeft'); my $left = $btree->removeLeft(); isa_ok($left, 'BinaryTree'); - + ok(!$btree->hasLeft(), '... we dont have a left node anymore'); ok(!$btree->isLeaf(), '... and we are not a leaf node'); - + $btree->setLeft($left); - - ok($btree->hasLeft(), '... we have our left node again'); + + ok($btree->hasLeft(), '... we have our left node again'); is($btree->getLeft(), $left, '... and it is what we told it to be'); } @@ -132,14 +141,14 @@ is($btree->getNodeValue(), '*', '... got what we expected'); # remove left leaf my $left_leaf = $btree->getLeft()->removeLeft(); isa_ok($left_leaf, 'BinaryTree'); - + ok($left_leaf->isLeaf(), '... our left leaf is a leaf'); - + ok(!$btree->getLeft()->hasLeft(), '... we dont have a left leaf node anymore'); - + $btree->getLeft()->setLeft($left_leaf); - - ok($btree->getLeft()->hasLeft(), '... we have our left leaf node again'); + + ok($btree->getLeft()->hasLeft(), '... we have our left leaf node again'); is($btree->getLeft()->getLeft(), $left_leaf, '... and it is what we told it to be'); } @@ -147,28 +156,28 @@ is($btree->getNodeValue(), '*', '... got what we expected'); can_ok($btree, 'removeRight'); my $right = $btree->removeRight(); isa_ok($right, 'BinaryTree'); - + ok(!$btree->hasRight(), '... we dont have a right node anymore'); - ok(!$btree->isLeaf(), '... and we are not a leaf node'); - + ok(!$btree->isLeaf(), '... and we are not a leaf node'); + $btree->setRight($right); - - ok($btree->hasRight(), '... we have our right node again'); - is($btree->getRight(), $right, '... and it is what we told it to be') + + ok($btree->hasRight(), '... we have our right node again'); + is($btree->getRight(), $right, '... and it is what we told it to be') } { # remove right leaf my $right_leaf = $btree->getRight()->removeRight(); isa_ok($right_leaf, 'BinaryTree'); - + ok($right_leaf->isLeaf(), '... our right leaf is a leaf'); - + ok(!$btree->getRight()->hasRight(), '... we dont have a right leaf node anymore'); - + $btree->getRight()->setRight($right_leaf); - - ok($btree->getRight()->hasRight(), '... we have our right leaf node again'); + + ok($btree->getRight()->hasRight(), '... we have our right leaf node again'); is($btree->getRight()->getRight(), $right_leaf, '... and it is what we told it to be'); } @@ -213,10 +222,10 @@ is($btree->getNodeValue(), '*', '... got what we expected'); ) ); isa_ok($btree, 'BinaryTree'); - + can_ok($btree, 'size'); cmp_ok($btree->size(), '==', 14, '... we have 14 nodes in the tree'); - + can_ok($btree, 'height'); cmp_ok($btree->height(), '==', 6, '... the tree is 6 nodes tall'); @@ -230,8 +239,8 @@ sub inOrderTraverse { my @results; my $_inOrderTraverse = sub { my ($tree, $traversal_function) = @_; - $traversal_function->($tree->getLeft(), $traversal_function) if $tree->hasLeft(); - push @results => $tree->getNodeValue(); + $traversal_function->($tree->getLeft(), $traversal_function) if $tree->hasLeft(); + push @results => $tree->getNodeValue(); $traversal_function->($tree->getRight(), $traversal_function) if $tree->hasRight(); }; $_inOrderTraverse->($tree, $_inOrderTraverse); @@ -244,7 +253,7 @@ sub inOrderTraverse { ->setLeft( BinaryTree->new(2) ->setLeft( - BinaryTree->new(1) + BinaryTree->new(1) ) ->setRight( BinaryTree->new(3) @@ -253,22 +262,22 @@ sub inOrderTraverse { ->setRight( BinaryTree->new(6) ->setLeft( - BinaryTree->new(5) + BinaryTree->new(5) ) ->setRight( BinaryTree->new(7) ) ); isa_ok($btree, 'BinaryTree'); - + is_deeply( [ inOrderTraverse($btree) ], [ 1 .. 7 ], '... check that our tree starts out correctly'); - + can_ok($btree, 'mirror'); $btree->mirror(); - + is_deeply( [ inOrderTraverse($btree) ], [ reverse(1 .. 7) ], @@ -283,10 +292,10 @@ sub inOrderTraverse { ->setLeft( BinaryTree->new(1) ->setRight( - BinaryTree->new(10) + BinaryTree->new(10) ->setLeft( - BinaryTree->new(5) - ) + BinaryTree->new(5) + ) ) ) ->setRight( @@ -296,24 +305,24 @@ sub inOrderTraverse { ->setRight( BinaryTree->new(6) ->setLeft( - BinaryTree->new(5) + BinaryTree->new(5) ->setRight( BinaryTree->new(7) ->setLeft( BinaryTree->new(90) - ) + ) ->setRight( BinaryTree->new(91) - ) - ) + ) + ) ) ); isa_ok($btree, 'BinaryTree'); - + my @results = inOrderTraverse($btree); - + $btree->mirror(); - + is_deeply( [ inOrderTraverse($btree) ], [ reverse(@results) ],