X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F100_BinaryTree_test.t;h=f6f1c37943e27e043b564e3ecefb5e8a28de21c8;hb=871e9eb5d05b8b9986b2de3f4095f65a31159c56;hp=a7684ebb158ba63331c3804a2f3c358d13060278;hpb=c50c603e0b03ecf8d9ce888b94809240366c1bc0;p=gitmo%2FClass-MOP.git diff --git a/t/100_BinaryTree_test.t b/t/100_BinaryTree_test.t index a7684eb..f6f1c37 100644 --- a/t/100_BinaryTree_test.t +++ b/t/100_BinaryTree_test.t @@ -1,18 +1,28 @@ -#!/usr/bin/perl - use strict; use warnings; -use Test::More tests => 67; +use FindBin; +use File::Spec::Functions; -BEGIN { - use_ok('t::lib::BinaryTree'); -} +use Test::More; +use Test::Fatal; + +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'); + +is( exception { + Class::MOP::load_class('BinaryTree'); +}, undef, '... 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 @@ -62,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'); @@ -71,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 @@ -117,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'); } @@ -131,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'); } @@ -146,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'); } @@ -212,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'); @@ -229,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); @@ -243,7 +253,7 @@ sub inOrderTraverse { ->setLeft( BinaryTree->new(2) ->setLeft( - BinaryTree->new(1) + BinaryTree->new(1) ) ->setRight( BinaryTree->new(3) @@ -252,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) ], @@ -282,10 +292,10 @@ sub inOrderTraverse { ->setLeft( BinaryTree->new(1) ->setRight( - BinaryTree->new(10) + BinaryTree->new(10) ->setLeft( - BinaryTree->new(5) - ) + BinaryTree->new(5) + ) ) ) ->setRight( @@ -295,27 +305,28 @@ 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) ], '... this should be the reverse of the original'); } +done_testing;