def test_it_can_chain_animations(): def make_sequence(): s = a.Sequence() k1 = a.KeyFrame(position=(10, 10)) k2 = a.KeyFrame(position=(10, 100)) s.add_keyframes((0, k1), (1, k2)) return s seq1 = make_sequence() seq2 = make_sequence() inst1 = arcade.Sprite() inst2 = arcade.Sprite() chain = a.Chain() chain.add_sequence(inst1, seq1) chain.add_sequence(inst2, seq2) chain.blip(0) assert inst1.position == (10, 10) assert inst2.position == (0, 0) chain.blip(.5) assert inst1.position == (10, 55) assert inst2.position == (0, 0) chain.blip(1) assert inst1.position == (10, 100) assert inst2.position == (10, 55) chain.blip(1) assert inst1.position == (10, 100) assert inst2.position == (10, 100) assert chain.finished
def test_it_can_kill_from_chain_if_current_animator_has_sprite(): chain = a.Chain() chain.anim_queue = 1 sprite = mock.Mock() current_animator = mock.Mock(sprite=sprite) chain.current_animator = current_animator assert chain.kill(sprite)
def test_it_can_kill_from_chain_if_sprite_is_in_future_animations(): chain = a.Chain() sprite = mock.Mock() chain.anim_queue = iter([(sprite, None)]) current_animator = mock.Mock(sprite=mock.Mock()) chain.current_animator = current_animator assert chain.kill(sprite)
def test_it_can_reconstruct_anim_queue_on_invalid_kill(): chain = a.Chain() anim = (mock.Mock(), None) chain.anim_queue = iter([anim]) current_animator = mock.Mock(sprite=mock.Mock()) chain.current_animator = current_animator assert not chain.kill(mock.Mock()) assert list(chain.anim_queue) == [anim]
def test_it_doesnt_break_when_killing_on_unstarted_chain(): chain = a.Chain() assert not chain.kill(mock.Mock())