# running Build.PL /Users/cpanrun/build/5.10.0/bin/perl Build.PL Checking whether your kit is complete... Looks good Checking prerequisites... Looks good Creating new 'Build' script for 'Games-PMM' version '0.10' Unknown 'build_class', defaulting to 'Module::Build' /Users/cpanrun/build/5.10.0/bin/perl Build --makefile_env_macros 1 Copying lib/Games/PMM/Arena.pm -> blib/lib/Games/PMM/Arena.pm Copying lib/Games/PMM/Monster/Commands.pm -> blib/lib/Games/PMM/Monster/Commands.pm Copying lib/Games/PMM/Actions.pm -> blib/lib/Games/PMM/Actions.pm Copying lib/Games/PMM.pm -> blib/lib/Games/PMM.pm Copying lib/Games/PMM/Monster.pm -> blib/lib/Games/PMM/Monster.pm Manifying blib/lib/Games/PMM/Monster/Commands.pm -> blib/libdoc/Games::PMM::Monster::Commands.3 Manifying blib/lib/Games/PMM/Arena.pm -> blib/libdoc/Games::PMM::Arena.3 Manifying blib/lib/Games/PMM/Actions.pm -> blib/libdoc/Games::PMM::Actions.3 Manifying blib/lib/Games/PMM.pm -> blib/libdoc/Games::PMM.3 Manifying blib/lib/Games/PMM/Monster.pm -> blib/libdoc/Games::PMM::Monster.3 HTMLifying blib/lib/Games/PMM/Monster/Commands.pm -> blib/libhtml/site/lib/Games/PMM/Monster/Commands.html HTMLifying blib/lib/Games/PMM/Arena.pm -> blib/libhtml/site/lib/Games/PMM/Arena.html HTMLifying blib/lib/Games/PMM/Actions.pm -> blib/libhtml/site/lib/Games/PMM/Actions.html HTMLifying blib/lib/Games/PMM.pm -> blib/libhtml/site/lib/Games/PMM.html HTMLifying blib/lib/Games/PMM/Monster.pm -> blib/libhtml/site/lib/Games/PMM/Monster.html /Users/cpanrun/build/5.10.0/bin/perl Build --makefile_env_macros 1 test t/Games/PMM.....................1..2 ok 1 - use Games::PMM; ok 2 - Games::PMM should compile and have a version ok t/Games/PMM/Actions.............1..32 ok 1 - use Games::PMM::Actions; ok 2 - Games::PMM::Actions->can('new') ok 3 - The object isa Games::PMM::Actions ok 4 - Games::PMM::Actions->can('should_turn') ok 5 - should_turn() should return false if monster can move ahead or back ok 6 - ... and should return direction monster should turn ok 7 - ... appropriate for position relative to other monster ok 8 - ... whether charging or retreating ok 9 - Games::PMM::Actions->can('action_charge') ok 10 - action_charge() should move monster toward other monster ok 11 - ... preferring direction of facing ok 12 - Games::PMM::Actions->can('action_retreat') ok 13 - action_retreat() should move monster away from seen monster ok 14 - ... preferring direction of facing ok 15 - Games::PMM::Actions->can('action_forward') ok 16 - action_forward() should move monster forward ok 17 - ... respecting facing ok 18 - Games::PMM::Actions->can('action_reverse') ok 19 - action_reverse() should move monster backwards ok 20 - ... respecting facing ok 21 - Games::PMM::Actions->can('action_turn') ok 22 - action_turn() should turn monster ok 23 - ... updating facing appropriately ok 24 - Games::PMM::Actions->can('action_scan') ok 25 - action_scan() should update monster with all seen monsters ok 26 - ... with coordinates and distance ok 27 - Games::PMM::Actions->can('action_attack') ok 28 - action_attack() should fail unless victim is adjacent to attacker ok 29 - ... and should fail if victim is behind attacker ok 30 - ... succeeding if victim is adjacent, not behind ok 31 - ... damaging the victim one point ok 32 - ... and leaving attacker alone ok t/Games/PMM/Arena...............1..83 ok 1 - use Games::PMM::Arena; ok 2 - Games::PMM::Arena->can('new') ok 3 - The object isa Games::PMM::Arena ok 4 - Games::PMM::Arena->can('x_limit') ok 5 - x_limit() should return 9 ok 6 - Games::PMM::Arena->can('y_limit') ok 7 - y_limit() should return 9 ok 8 - Games::PMM::Arena->can('add_monster') ok 9 - Games::PMM::Arena->can('coordinates') ok 10 - add_monster() should update coordinates ok 11 - ... for each added monster ok 12 - Games::PMM::Arena->can('monsters') ok 13 - add_monster() should update monster list ok 14 - ... for each added monster ok 15 - Games::PMM::Arena->can('validate_position') ok 16 - validate_position() should return false if an axis exceeds upper bound ok 17 - ... either axis ok 18 - ... or if an axis exceeds lower bound ok 19 - ... either axis ok 20 - ... or if there is something at that position already ok 21 - ... but true if there is nothing there ok 22 - Games::PMM::Arena->can('get_position') ok 23 - get_position() should return position of given monster ok 24 - ... for each monster ok 25 - ... or false if monster is not in arena ok 26 - Games::PMM::Arena->can('update_position') ok 27 - update_position() should change monster position ok 28 - ... in coordinate list ok 29 - ... and in monster list ok 30 - Games::PMM::Arena->can('get_monster') ok 31 - get_monster() should return monster at given coordinates ok 32 - ... or undef if no monster is there ok 33 - ... or if coordinates are out of range ok 34 - ... not stretching x axis ok 35 - ... or y axis ok 36 - Games::PMM::Arena->can('forward') ok 37 - forward() should move monster forward ok 38 - ... returning true if monster could move ok 39 - ... respecting facing ok 40 - ... returning false if monster cannot move ok 41 - Games::PMM::Arena->can('reverse') ok 42 - reverse() should move monster backwards ok 43 - ... returning true if monster can move ok 44 - ... respecting facing ok 45 - ... returning false if monster cannot move ok 46 - Games::PMM::Arena->can('is_wall') ok 47 - is_wall() should be true if x < 0 ok 48 - ... or if y < 0 ok 49 - ... or if x > x limit ok 50 - ... or if y > y limit ok 51 - ... but not if x or y is 0 ok 52 - ... and not if x or y is limit ok 53 - Games::PMM::Arena->can('get_distance') ok 54 - get_distance() should calculate straight line distances correctly ok 55 - ... along both axes ok 56 - ... calculating absolute distance correctly ok 57 - ... counting moves, not diagonal motion ok 58 - Games::PMM::Arena->can('behind') ok 59 - behind() should return true if monster is south of north-facer ok 60 - ... or if monster is west of east-facer ok 61 - ... or if monster is north of south-facer ok 62 - ... or if monster is east of west-facer ok 63 - Games::PMM::Arena->can('scan') ok 64 - scan() should return results for all monsters seen ok 65 - ... returning monster id, coordinates, and distance ok 66 - ... respecting monster facing ok 67 - ... and ignoring the monster itself ok 68 - ... monster should not see monsters on axis perpendicular to facing ok 69 - ... unless one square away ok 70 - ... respecting facing ok 71 - Games::PMM::Arena->can('move_monster') ok 72 - move_monster() should move monster per coordinates ok 73 - ... handling coordinates as deltas, not absolute positions ok 74 - ... not moving monster onto another monster ok 75 - ... or moving monster past lower bounds ok 76 - ... on either axis ok 77 - ... or upper bound ok 78 - ... on either axis ok 79 - Games::PMM::Arena->can('attack') ok 80 - attack() should fail unless victim is ahead of or beside attacker ok 81 - ... not damaging intended victim ok 82 - ... succeeding otherwise ok 83 - ... damaging victim ok t/Games/PMM/Monster.............1..35 ok 1 - use Games::PMM::Monster; ok 2 - Games::PMM::Monster->can('new') ok 3 - The object isa Games::PMM::Monster ok 4 - Games::PMM::Monster->can('id') ok 5 - new monster should have an id ok 6 - ... unique to each new monster ok 7 - Games::PMM::Monster->can('health') ok 8 - health() should be full on a new monster ok 9 - Games::PMM::Monster->can('damage') ok 10 - damage() should damage monster and return its health ok 11 - ... removing a point of health ok 12 - Games::PMM::Monster->can('commands') ok 13 - commands() should return an object that isa Games::PMM::Monster::Commands ok 14 - Games::PMM::Monster->can('next_command') ok 15 - next_command() should start with first command ok 16 - ... continuing with next command ok 17 - ... returning undef at end of commands ok 18 - ... looping back to start as needed ok 19 - Games::PMM::Monster->can('facing') ok 20 - facing() should default to north ok 21 - ... but should be settable ok 22 - Games::PMM::Monster->can('seen') ok 23 - seen() should be gettable and settable ok 24 - Games::PMM::Monster->can('turn') ok 25 - ... turning right from south should face monster west ok 26 - ... turning right from west should face monster north ok 27 - ... turning right from north should face monster east ok 28 - ... turning right from east should face monster south ok 29 - ... turning left from south should face monster east ok 30 - ... turning left from east should face monster north ok 31 - ... turning left from north should face monster west ok 32 - ... turning left from west should face monster south ok 33 - Games::PMM::Monster->can('closest') ok 34 - closest() should return closest seen monster ok 35 - ... or undef if no monsters have been seen ok t/Games/PMM/Monster/Commands....1..8 ok 1 - use Games::PMM::Monster::Commands; ok 2 - Games::PMM::Monster::Commands->can('new') ok 3 - The object isa Games::PMM::Monster::Commands ok 4 - Games::PMM::Monster::Commands->can('next') ok 5 - next() should return first command and args ok 6 - ... then second ok 7 - ... returning nothing after reaching end ok 8 - ... restarting after end ok All tests successful. Files=5, Tests=160, 1 wallclock secs ( 0.35 cusr + 0.10 csys = 0.45 CPU) /Users/cpanrun/build/5.10.0/bin/perl Build --makefile_env_macros 1 install Installing /Users/cpanrun/build/5.10.0/site/lib/Games/PMM.pm Installing /Users/cpanrun/build/5.10.0/site/lib/Games/PMM/Actions.pm Installing /Users/cpanrun/build/5.10.0/site/lib/Games/PMM/Arena.pm Installing /Users/cpanrun/build/5.10.0/site/lib/Games/PMM/Monster.pm Installing /Users/cpanrun/build/5.10.0/site/lib/Games/PMM/Monster/Commands.pm Installing /Users/cpanrun/build/5.10.0/site/man/man3/Games::PMM.3 Installing /Users/cpanrun/build/5.10.0/site/man/man3/Games::PMM::Actions.3 Installing /Users/cpanrun/build/5.10.0/site/man/man3/Games::PMM::Arena.3 Installing /Users/cpanrun/build/5.10.0/site/man/man3/Games::PMM::Monster.3 Installing /Users/cpanrun/build/5.10.0/site/man/man3/Games::PMM::Monster::Commands.3 Installing /Users/cpanrun/build/5.10.0/html/site/lib/Games/PMM.html Installing /Users/cpanrun/build/5.10.0/html/site/lib/Games/PMM/Actions.html Installing /Users/cpanrun/build/5.10.0/html/site/lib/Games/PMM/Arena.html Installing /Users/cpanrun/build/5.10.0/html/site/lib/Games/PMM/Monster.html Installing /Users/cpanrun/build/5.10.0/html/site/lib/Games/PMM/Monster/Commands.html Writing /Users/cpanrun/build/5.10.0/site/lib/auto/Games/PMM/.packlist