{"text_format":"2","workbook":"xlsx","n_sheets":1,"sheets":["TestLog"],"not_rendered":{"charts":0,"images":0,"macros":0,"external_links":0,"defined_names":0,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"run_cost":"one","rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900"}

{"sheet":"TestLog","index":0,"n_rows":61,"n_cols":5,"rows_kept":61,"cut":false,"hidden":false,"merged":[]}
["Action","Purpose","Intended Result","Actual Result","Action Taken"]
["Run Game","Test the player's downward gravity","Player falls in correct direction","Player does not fall","Add call to DropPlayer()"]
["Run Game","Test the player's downward gravity","Player falls in correct direction","Error: Subscript out of range","Set Timer.Enabled to False"]
["Run Game","Test the player's downward gravity","Player falls in correct direction","Player floats up and to the left until error: Subscript out of range","Swap player position increments and decrements"]
["Run Game","Test the player's downward gravity","Player falls in correct direction","Player floats up until error: Subscript out of range","Swap else blocks around within all evaluations of PlayerGravDir"]
["Run Game","Test the player's downward gravity","Player falls in correct direction","Player falls through floor","Add TickCount() to FutureRegion evaluations"]
["Run Game","Test the player's downward gravity","Player falls in correct direction","Player lands on some solid blocks, but falls through others","Reconsider and rewrite entire mathematics for tile collision"]
["Run Game","Test the player's downward gravity","Player falls in correct direction","Player falls in correct direction","None"]
["Run Game","Test the player's collision with the map","Entire sprite rests on top of block without falling through it.","Entire sprite rests on top of block without falling through it.","None"]
["Move character left and right, up and down","Test the player's collision with the map","Sprite does not pass through wall","Player cannot move at all","Add a call to MovePlayer()"]
["Move character left and right, up and down","Test the player's collision with the map","Sprite does not pass through wall","Error: Block If without End If","Add missing End Ifs"]
["Move character left and right, up and down","Test the player's collision with the map","Sprite does not pass through wall","Character warps through walls on the right and below the player.","Correct player positioning for right movement (FuturePos doesn't need +1)"]
["Move character left and right, up and down","Test the player's collision with the map","Sprite does not pass through wall","Character now warps both ways","Revert changes and apply those changes to the correct keys"]
["Move character left and right, up and down","Test the player's collision with the map","Sprite does not pass through wall","Player collision with right-hand walls is one pixel off","Move the player back 8 pixels from the tile centre instead of 7 pixels"]
["Move character left and right, up and down","Test the player's collision with the map","Sprite does not pass through wall","Sprite does not pass through wall","None"]
["Change gravity","Test movement restrictions while falling","Player cannot move or change gravity while falling","Player cannot move or change gravity while falling","None"]
["Run program, observe robot","Ensure the robot moves of its own accord","Robot moves of its own accord","Error: Can't assign to array","Change Robot1Anim to variable instead of array"]
["Run program, observe robot","Ensure the robot moves of its own accord","Robot moves of its own accord","Robot does not move","Add code to update robot's position on screen"]
["Run program, observe robot","Ensure the robot moves of its own accord","Robot moves of its own accord","Robot does not move","Add a call to MoveBot()"]
["Run program, observe robot","Ensure the robot moves of its own accord","Robot moves of its own accord","Robot moves of its own accord","None"]
["Place robot on multiple surfaces","Observe robot behaviour on multiple surfaces","Robot stops at walls and edges, and changes direction","Robot stops at walls and edges, and changes direction","None"]
["Run the game again, observe both robots","Observe the behaviour of both robots on multiple surfaces","Both robots stop at walls and edges, and change direction","Robots stop at walls and edges, and change direction, but the second robot stops just past the edge","Address later and consider it acceptable behaviour for the time being"]
["Run game","Observe tile layout","Shock tiles display wherever they have been assigned in the map file","Shock tiles display, but their presence disrupts the bordering of solid tiles","Change border algorithm to check for blocks with a number that is not 1"]
["Run game","Observe tile layout","Shock tiles display wherever they have been assigned in the map file","Bordering is completely incorrect","Change border algorithm to check for blocks with a number that is not 1 (forgot to make this change across the algorithm)"]
["Run game","Observe tile layout","Shock tiles display wherever they have been assigned in the map file","Shock tiles display wherever they have been assigned in the map file","None"]
["Run game","Observe tile layout","Entry and exit tiles display","Entry and exit tiles display","None"]
["Move player into shock tile","Observe player state","Player state becomes 2 (signalling a shocked player)","Player state becomes 2 (signalling a shocked player)","None"]
["Drop player onto shock tile","Observe player state","Player state becomes 2 (signalling a shocked player)","Player state becomes 2 (signalling a shocked player)","None"]
["Move player toward robot 1","Check proximity detection for robots","Player state becomes 2 when player is on adjacent or exact tile","Robot ignores non-falling players on a different axis","Remove evaluations for axis from detection algorithm"]
["Move player toward robot 1","Check proximity detection for robots","Player state becomes 2 when player is on adjacent or exact tile","Player state becomes 2 when player is on adjacent or exact tile","None"]
["Move player toward robot 1","Check collision detection for robots","Player state becomes 2 when player collides with the robot","Player state becomes 2 when player collides with the robot","None"]
["Move player toward robot 2","Check collision detection for robots","Player state becomes 2 when player collides with the robot","Player state becomes 2 when player collides with the robot","None"]
["Drop player from a height","Check program's reactions to falls","Game halts for a few seconds before resetting the level","Game halts for a few seconds before resetting the level","None"]
["Run into a robot","Check program's reactions to shock","Game halts for a few seconds before resetting the level","Game halts for a few seconds before resetting the level","None"]
["Run and fall into a shock tile","Check program's reactions to shock","Game halts for a few seconds before resetting the level","Game halts for a few seconds before resetting the level","None"]
["Walk into an exit tile","Ensure game registers level win","Player state becomes 1 (for level success)","Player state becomes 1 (for level success)","None"]
["Drop into an exit tile","Ensure game registers level win","Player state becomes 1 (for level success)","Player state becomes 1 (for level success)","None"]
["Drop player from a height","Test the accuracy of new falling distance code","Player becomes dazed after falling from more than two blocks","Player becomes dazed after falling from more than two blocks","None"]
["Complete a level","Ensure the game switches levels correctly","Game moves on to next level","Game moves on to next level","None"]
["Complete all levels","Ensure all levels load correctly","Game moves on to correct levels until there are no more to load","Game moves on to correct levels until there are no more to load","None"]
["Complete all levels","Ensure the game switches to the victory screen","Game switches to victory screen","Error: Subscript out of range","Correct level completion code to set level to 101 (necessary to alert the program that the game has been won)"]
["Complete all levels","Ensure the game switches to the victory screen","Game switches to victory screen","Game switches to victory screen","None"]
["Reach victory screen and wait","Ensure the game switches to the title screen","Game switches to the title screen","Game remains stuck on title screen","Add a call to Form_Load() in order to return to the title screen"]
["Reach victory screen and wait","Ensure the game switches to the title screen","Game switches to the title screen","Game switches to the title screen","None"]
["Start game","Observe the behaviour of the retries meter","Retries meter displays correctly and reports correct information","Retries meter only displays “Retries: “","Add code to update the retries meter (lblRetries) with the current number of retries"]
["Start game","Observe the behaviour of the retries meter","Retries meter displays correctly and reports correct information","Retries meter displays correctly and reports correct information","None"]
["Start game, fall too far","Observe the behaviour of the retries meter","Retries meter correctly shows deducted number of remaining lives","Retries meter correctly shows deducted number of remaining lives","None"]
["Start game, walk into a shock tile","Observe the behaviour of the retries meter","Retries meter correctly shows deducted number of remaining lives","Retries meter correctly shows deducted number of remaining lives","None"]
["Start game, walk into a robot","Observe the behaviour of the retries meter","Retries meter correctly shows deducted number of remaining lives","Retries meter correctly shows deducted number of remaining lives","None"]
["Exhaust all retries","Ensure the game returns to the title screen","Game returns to the title screen","Game returns to the title screen, but missing some buttons","Add code to show the missing buttons when the title screen displays"]
["Exhaust all retries","Ensure the game returns to the title screen","Game returns to the title screen","Game returns to the title screen","None"]
["Start game, observe timer","Observe the behaviour of the timer","Timer displays correctly and increases at the correct rate","Only “Timer: “ displays","Add code to update the timer display"]
["Start game, observe timer","Observe the behaviour of the timer","Timer displays correctly and increases at the correct rate","Timer shows properly, but does not increase","Add code to update the timer display into the main game loop"]
["Start game, observe timer","Observe the behaviour of the timer","Timer displays correctly and increases at the correct rate","Timer displays and increases, but the minutes, seconds and milliseconds do not remain at a fixed length of 2 characters each","Add an evaluation to check if each second is below 10 and append a leading zero to them where necessary"]
["Start game, observe timer","Observe the behaviour of the timer","Timer displays correctly and increases at the correct rate","Timer displays correctly and increases at the correct rate","None"]
["Start game, click Help button","Observe the behaviour of the help screen","Help screen displays, shows contents of Instructions.txt correctly","Help screen displays, but text extends beyond the picture box's width","Edit Instructions.txt to fit the picturebox"]
["Start game, click Help button","Observe the behaviour of the help screen","Help screen displays, shows contents of Instructions.txt correctly","Help screen displays, shows contents of Instructions.txt correctly","None"]
["Start game, click Top Scores button","Observe the behaviour of the scores screen","Help screen displays, shows contents of Scores.txt correctly","Help screen displays, shows contents of Scores.txt correctly","None"]
["Start game, click Help button and then click Top Scores button","Observe the behaviour of the help screen and the top scores screen","Each screen hides itself when the other one is opened","Each screen hides itself when the other one is opened","None"]
["Finish game","Observe the game's handling of fastest times","Fast time is written to Scores.txt, to its correct position in the file, along with the player's initials","Time not written to file, despite qualifying as the fastest time","Reconsider and rewrite the algorithm for calculation a new score's position in the table"]
["Finish game","Observe the game's handling of fastest times","Fast time is written to Scores.txt, to its correct position in the file, along with the player's initials","Fast time is written to Scores.txt, to its correct position in the file, along with the player's initials","None"]