Files
pixel-platformer/tests/test_ladder.py
T

51 lines
1.2 KiB
Python

import pytest
from game import constants
from tests.support import makeWorld
from game.sim.inputCommand import InputCommand
ladderLevel = [
" H ",
" H ",
" H ",
"XXXXX",
]
def seatOnLadder(world):
world.player.x = 2 * constants.tileSize
world.player.y = 2 * constants.tileSize
world.player.vy = 0.0
def test_climbLadderReducesHeight():
world = makeWorld(ladderLevel)
seatOnLadder(world)
startY = world.player.y
for _ in range(8):
world.step(InputCommand(up=True))
assert world.player.onLadder
assert world.player.y < startY - 6.0
def test_ladderHoverIgnoresGravity():
world = makeWorld(ladderLevel)
seatOnLadder(world)
for _ in range(6):
world.step(InputCommand(up=True))
restingY = world.player.y
for _ in range(6):
world.step(InputCommand())
assert world.player.y == pytest.approx(restingY, abs=0.5)
def test_leavingLadderTileDropsClimbState():
world = makeWorld(ladderLevel)
seatOnLadder(world)
world.step(InputCommand(up=True))
assert world.player.onLadder
world.player.x = 0.0
world.step(InputCommand())
assert not world.player.onLadder