68 lines
1.6 KiB
Python
68 lines
1.6 KiB
Python
import pytest
|
|
|
|
from game import constants
|
|
from tests.support import makeWorld
|
|
from game.sim.inputCommand import InputCommand
|
|
|
|
|
|
def test_landsOnOneWayFromAbove():
|
|
world = makeWorld([
|
|
" p ",
|
|
" ",
|
|
"======",
|
|
" ",
|
|
"XXXXXX",
|
|
])
|
|
for _ in range(30):
|
|
world.step(InputCommand())
|
|
player = world.player
|
|
assert player.onGround
|
|
assert player.bottom == pytest.approx(2 * constants.tileSize)
|
|
|
|
|
|
def test_passesThroughOneWayFromBelow():
|
|
world = makeWorld([
|
|
" ",
|
|
"======",
|
|
" ",
|
|
" p ",
|
|
"XXXXXX",
|
|
])
|
|
minY = world.player.y
|
|
world.step(InputCommand(jump=True, jumpHeld=True))
|
|
for _ in range(16):
|
|
world.step(InputCommand(jumpHeld=True))
|
|
minY = min(minY, world.player.y)
|
|
assert minY < constants.tileSize
|
|
|
|
|
|
def test_dropThroughOneWay():
|
|
world = makeWorld([
|
|
" p ",
|
|
" ",
|
|
"======",
|
|
" ",
|
|
"XXXXXX",
|
|
])
|
|
for _ in range(30):
|
|
world.step(InputCommand())
|
|
assert world.player.bottom == pytest.approx(2 * constants.tileSize)
|
|
for _ in range(30):
|
|
world.step(InputCommand(down=True, jump=True))
|
|
assert world.player.bottom == pytest.approx(4 * constants.tileSize)
|
|
|
|
|
|
def test_downWithoutJumpKeepsPlayerOnOneWay():
|
|
world = makeWorld([
|
|
" p ",
|
|
" ",
|
|
"======",
|
|
" ",
|
|
"XXXXXX",
|
|
])
|
|
for _ in range(30):
|
|
world.step(InputCommand())
|
|
for _ in range(20):
|
|
world.step(InputCommand(down=True))
|
|
assert world.player.bottom == pytest.approx(2 * constants.tileSize)
|