def test_breakWall(capsys): """ test some cases of break wall namely: normal case, border case, and breaking while on cooldown __author__ = 'Nicholas Koy' """ outerr = capsys.readouterr() p = "jumpBreak.txt" msglog = dg.MessageLog() name, hp, attack, speed, hunger = "Bob", 1000, 2000, 3000, 4000 player = dg.Player(name, hp, attack, speed, hunger) testMaze = dg.Maze(p, player) with mock.patch("builtins.input", side_effect=["r", "b", "right"]): testMaze.move(player, msglog) testMaze.move(player, msglog) assert testMaze.tuplemaze["(1, 3)"].obsID == " " with mock.patch("builtins.input", side_effect=["b", "rest"]): testMaze.move(player, msglog) combined = "".join(msglog.log) assert "broke" in combined assert "cooldown" in combined testMaze.move(player, msglog) with mock.patch("builtins.input", side_effect=["b"]): testMaze.move(player, msglog) combined = "".join(msglog.log) assert "No wall to break" in combined
def test_moveAndBattle(capsys): """ Does the game know how to handle other tiles correctly? __author__ = 'Nicholas Koy' and 'Nelson Contreras' """ outerr = capsys.readouterr() out = outerr.out p = "test_maze.txt" msglog = dg.MessageLog() name, hp, attack, speed, hunger = "Bob", 1000, 2000, 3000, 4000 player = dg.Player(name, hp, attack, speed, hunger) testMaze = dg.Maze(p, player) with mock.patch("builtins.input", side_effect=["r"]): testMaze.move(player, msglog) with mock.patch("builtins.input", side_effect=["u"]): testMaze.move(player, msglog) assert testMaze.tuplemaze[str(testMaze.currentTuple)].obsID == "E" #Only the main script from the module can end the game with mock.patch("builtins.input", side_effect=["l"]): testMaze.move(player, msglog) #print(msglog.log) combined = "".join(msglog.log) assert "picked up" in combined, "Something should have been picked up" with mock.patch("builtins.input", side_effect=["l", "a"]): testMaze.move(player, msglog) combined = "".join(msglog.log) assert "encountered" in combined, "Enemy should have appeared" assert "killed" in combined, "Enemy should have died" assert player.battlesWon == 1 assert player.battlesFought == 1 assert player.getScore() >= 110, \ "Score from killing enemy and item should be >= 110" assert "Found" in combined, "Item should have dropped"
def test_jumpWall(capsys): """ Makes sure that jumpWall works """ outerr = capsys.readouterr() p = "jumpBreak.txt" msglog = dg.MessageLog() name, hp, attack, speed, hunger = "Bob", 1000, 2000, 3000, 4000 player = dg.Player(name, hp, attack, speed, hunger) testMaze = dg.Maze(p, player) with mock.patch("builtins.input", side_effect=["r", "j", "right"]): testMaze.move(player, msglog) testMaze.move(player, msglog) assert str(testMaze.currentTuple) == "(1, 4)", "Didn't jump wall" assert player.abilityList["jump"] == 4, "Down 1 from 5 after moving"
def test_move2(): """ Will move() work when the player walks on a stair case? __author__ = 'Nicholas Koy' """ p = "test_maze.txt" msglog = dg.MessageLog() name, hp, attack, speed, hunger = "Bob", 1, 2, 3, 4 player = dg.Player(name, hp, attack, speed, hunger) testMaze = dg.Maze(p, player) with mock.patch("builtins.input", side_effect=["d"]): assert testMaze.move(player, msglog) == None with mock.patch("builtins.input", side_effect=["r"]): assert testMaze.move(player, msglog) == None with mock.patch("builtins.input", side_effect=["r"]): assert testMaze.move(player, msglog) == None assert str(testMaze.currentTuple) == "(2, 4)"
def test_move(): """ Uses moveDir() to check movement and log output on wall bump Honestly should delete now that I learned how to use capsys and mock __author__ = 'Nicholas Koy' """ p = "test_maze.txt" msglog = dg.MessageLog() name, hp, attack, speed, hunger = "Bob", 1000, 2000, 3000, 4000 player = dg.Player(name, hp, attack, speed, hunger) testMaze = dg.Maze(p, player) testMaze.moveUp(player, msglog) testMaze.afterMove(player, msglog) #print(player.inventory) assert "picked up" in str(msglog.log) testMaze.moveUp(player, msglog) testMaze.afterMove(player, msglog) assert "wall" in str(msglog.log)
def test_useItem(capsys): """ Rests and uses items Makes sure hp and hunger levels are correctly restored and map reveal works __author__ = 'Nicholas Koy' """ outerr = capsys.readouterr() p = "jumpBreak.txt" msglog = dg.MessageLog() name, hp, attack, speed, hunger = "Bob", 1000, 2000, 3000, 4000 player = dg.Player(name, hp, attack, speed, hunger) player.health = 1 testMaze = dg.Maze(p, player) actions = [ "r", "rest", "use", "food", "apple", "use", "bandage", "use", "map" ] with mock.patch("builtins.input", side_effect=actions): testMaze.move(player, msglog) assert player.health == 2, "should have healed 1 health after moving" testMaze.move(player, msglog) assert player.health == 102, "should have healed 10 perc hp after rest" assert player.hunger == 3989, "rest -10 hunger: move -1 hunger" testMaze.move(player, msglog) assert player.health == 117, "should have healed 15 hp from eating apple" assert player.hunger == 4000, "full belly after eating" testMaze.move(player, msglog) assert player.health == 117 + 250, "bandage should heal 250" assert player.inventory["bandage"] == 0, "bandage should be 0" assert player.inventory["food"]["apple"] == 0, "apple should be 0" testMaze.move(player, msglog) allRevealed = True for cell in testMaze.tuplemaze.keys(): if not testMaze.tuplemaze[cell].revealed: allRevealed = False assert allRevealed, "Every cell should be revealed now"