Esempio n. 1
0
    def test_should_call_try_movement_on_all_traversables_at_destination_pos(
            self):
        p = interfaces.Position(1, 1)
        p1 = p + (1, 0)
        ts = [
            Mock(spec=tiles.Floor),
            Mock(spec=tiles.Floor),
        ]
        o = monsters.Dalek(p)
        for t in ts:
            t.pos = p1
            t.try_movement = Mock(return_value=1.0)
            self.map.add(t)
        self.map.add(o)

        t1 = Mock(spec=tiles.Floor)
        t1.pos = p
        t1.try_leaving = Mock(return_value=True)
        self.map.add(t1)

        assert_equal(self.map.move(o, p1), 2.0)

        for t in ts:
            t.try_movement.assert_called_once_with(o)
        assert_equal(t1.try_movement.call_count, 0)
Esempio n. 2
0
    def test_should_add_obj_to_correct_layer_if_not_given(self):
        p = interfaces.Position(1, 1)
        for (o, layer) in (
            (tiles.Wall(p), tiles.Tile),
            (tiles.EvidencePanel(p), tiles.Tile),
            (monsters.Dalek(p), monsters.Monster),
            (monsters.StaticCamera(p), monsters.Monster),
            (items.HandTeleport(p, 1.0), items.Item),
            (items.RemoteControl(p, 1.0), items.Item),
        ):
            assert_is(self.map.add(o), None)

            assert_is(self.map.find_at_pos(p, layer), o)
            assert_is(o.map, self.map)

            assert_is(self.map.remove(o), None)
            assert_is(self.map.find_at_pos(p, layer), None)
Esempio n. 3
0
    def test_should_remove_obj_from_given_layer(self):
        # almost exactly the same
        p = interfaces.Position(1, 1)
        for (o, layer) in (
            (tiles.Wall(p), tiles.Tile),
            (tiles.EvidencePanel(p), tiles.Tile),
            (monsters.Dalek(p), monsters.Monster),
            (monsters.StaticCamera(p), monsters.Monster),
            (items.HandTeleport(p, 1.0), items.Item),
            (items.RemoteControl(p, 1.0), items.Item),
        ):

            assert_is(self.map.add(o, layer), None)
            assert_is(o.map, self.map)
            assert_is(self.map.find_at_pos(p, layer), o)

            assert_is(self.map.remove(o, layer), None)

            assert_is(o.pos, None)
            assert_is(self.map.find_at_pos(p, layer), None)
Esempio n. 4
0
    def test_should_use_layer_parameter_if_given(self):
        p = interfaces.Position(1, 1)
        p1 = p + (1, 1)
        for (o, layer) in (
            (tiles.Wall(p), tiles.Tile),
            (tiles.EvidencePanel(p), tiles.Tile),
            (monsters.Dalek(p), monsters.Monster),
            (monsters.StaticCamera(p), monsters.Monster),
            (items.HandTeleport(p, 1.0), items.Item),
            (items.RemoteControl(p, 1.0), items.Item),
        ):
            assert_is(self.map.add(o, layer), None)

            assert_equal(self.map.move(o, p1, layer), 0.0)

            assert_is(o.map, self.map)
            assert_is(self.map.find_at_pos(p, layer), None)
            assert_is(self.map.find_at_pos(p1, layer), o)
            assert_equal(o.pos, p1)

            assert_is(self.map.remove(o, layer), None)
            assert_is(self.map.find_at_pos(p, layer), None)