Beispiel #1
0
home = Location(name="Home",
                description="Home is where the heart is!",
                exits={
                    "east": (None, "Street"),
                    "down": (key, "Basement")
                })
street = Location(name="Street",
                  description="The street next to your house.",
                  exits={"west": (None, "Home")},
                  items={key.name: key})
basement = Location(name="Basement",
                    description="You found the basement!",
                    exits={"up": (None, "Home")})
world = pmap({x.name: x for x in [home, street, basement]})
initial_state = GameState(location_name="Home", world=world)
in_street = initial_state.set(location_name="Street")
in_street_with_key = in_street.transform(["world", "Street", "items"],
                                         lambda _: {}, ["inventory"],
                                         lambda _: [key])


def test_take_not_found():
    assert take(initial_state, "some item") is None


def test_take_something():
    in_street = initial_state.set(location_name="Street")
    assert take(in_street, "rusty key") == in_street_with_key


def test_move_invalid():