Example #1
0
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
Example #2
0
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"
Example #3
0
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"
Example #4
0
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)"
Example #5
0
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)
Example #6
0
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"