PATH=C:\mingw\bin;C:\cygwin\bin;C:\cpanfly-5.20\var\megalib\bin;C:\Perl64-5.20\site\bin;C:\Perl64-5.20\bin;C:\cygwin\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\PROGRA~2\Perforce;C:\instantclient_11_2;C:\cygwin\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\PROGRA~2\Perforce;C:\mysql\bin Start 2014-10-14T12:57:37 ActivePerl-2000 CPAN-2.00 PATH=C:/CPANFL~1.20/var/libs/bin;C:\mingw\bin;C:\cygwin\bin;C:\CPANFL~1.20\var\megalib\bin;C:\Perl64-5.20\site\bin;C:\Perl64-5.20\bin;C:\cygwin\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\WINDOW~1\v1.0;C:\PROGRA~2\Perforce;C:\INSTAN~1;C:\cygwin\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\WINDOW~1\v1.0;C:\PROGRA~2\Perforce;C:\mysql\bin Reading 'C:\cpanfly-5.20\var\cpan\Metadata' Database was generated on Tue, 14 Oct 2014 16:53:26 GMT Running make for C/CH/CHROMATIC/Games-PMM-0.10.tar.gz Fetching with LWP: http://cpan.nas1.activestate.com/authors/id/C/CH/CHROMATIC/Games-PMM-0.10.tar.gz Checksum for C:\cpanfly-5.20\var\cpan\sources\authors\id\C\CH\CHROMATIC\Games-PMM-0.10.tar.gz ok Games-PMM-0.10/ Games-PMM-0.10/lib/ Games-PMM-0.10/lib/Games/ Games-PMM-0.10/lib/Games/PMM/ Games-PMM-0.10/lib/Games/PMM/Arena.pm Games-PMM-0.10/lib/Games/PMM/Monster/ Games-PMM-0.10/lib/Games/PMM/Monster/Commands.pm Games-PMM-0.10/lib/Games/PMM/Actions.pm Games-PMM-0.10/lib/Games/PMM/Monster.pm Games-PMM-0.10/lib/Games/PMM.pm Games-PMM-0.10/META.yml Games-PMM-0.10/t/ Games-PMM-0.10/t/Games/ Games-PMM-0.10/t/Games/PMM/ Games-PMM-0.10/t/Games/PMM/Arena.t Games-PMM-0.10/t/Games/PMM/Actions.t Games-PMM-0.10/t/Games/PMM/Monster/ Games-PMM-0.10/t/Games/PMM/Monster/Commands.t Games-PMM-0.10/t/Games/PMM/Monster.t Games-PMM-0.10/t/Games/PMM.t Games-PMM-0.10/MANIFEST Games-PMM-0.10/ChangeLog Games-PMM-0.10/README Games-PMM-0.10/Build.PL Games-PMM-0.10/Makefile.PL CPAN.pm: Building C/CH/CHROMATIC/Games-PMM-0.10.tar.gz >>> C:\Perl64-5.20\bin\perl.exe Makefile.PL # running Build.PL Created MYMETA.yml and MYMETA.json Creating new 'Build' script for 'Games-PMM' version '0.10' Unknown 'build_class', defaulting to 'Module::Build' >>> dmake C:\Perl64-5.20\bin\perl.exe Build --makefile_env_macros 1 Building Games-PMM CHROMATIC/Games-PMM-0.10.tar.gz dmake -- OK Running make test >>> dmake test TEST_VERBOSE=1 C:\Perl64-5.20\bin\perl.exe Build --makefile_env_macros 1 test t\Games\PMM.t ................... 1..2 ok 1 - use Games::PMM; ok 2 - Games::PMM should compile and have a version ok t\Games\PMM\Actions.t ........... 1..32 ok 1 - use Games::PMM::Actions; ok 2 - Games::PMM::Actions->can('new') ok 3 - An object of class 'Games::PMM::Actions' 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.t ............. 1..83 ok 1 - use Games::PMM::Arena; ok 2 - Games::PMM::Arena->can('new') ok 3 - An object of class 'Games::PMM::Arena' 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.t ........... 1..35 ok 1 - use Games::PMM::Monster; ok 2 - Games::PMM::Monster->can('new') ok 3 - An object of class 'Games::PMM::Monster' 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.t .. 1..8 ok 1 - use Games::PMM::Monster::Commands; ok 2 - Games::PMM::Monster::Commands->can('new') ok 3 - An object of class 'Games::PMM::Monster::Commands' 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.08 usr + 0.05 sys = 0.12 CPU) Result: PASS CHROMATIC/Games-PMM-0.10.tar.gz dmake test TEST_VERBOSE=1 -- OK Fetching with LWP: http://cpan.nas1.activestate.com/authors/id/C/CH/CHROMATIC/CHECKSUMS Picked up abstract from lib/Games/PMM.pm chromatic <chromatic@wgz.org> the base distribution of the Paper Maché Monsters Game >>> (cd C:\cpanfly-5.20\var\cpan\build\Games-PMM-0.10-iVsN1e && tar cvf - Games-PMM-0.10.ppd blib) | gzip -c >C:/cpanfly-5.20/var/REPO/C/CH/CHROMATIC/Games-PMM-0.10.tar.gz Games-PMM-0.10.ppd blib/ blib/lib/ blib/lib/Games/ blib/lib/Games/PMM/ blib/lib/Games/PMM/Actions.pm blib/lib/Games/PMM/Arena.pm blib/lib/Games/PMM/Monster/ blib/lib/Games/PMM/Monster/Commands.pm blib/lib/Games/PMM/Monster.pm blib/lib/Games/PMM.pm >>> mv C:\cpanfly-5.20\var\cpan\build\Games-PMM-0.10-iVsN1e/Games-PMM-0.10.ppd C:/cpanfly-5.20/var/REPO/C/CH/CHROMATIC Finished 2014-10-14T12:57:42