예제 #1
0
class TestAnimation(unittest.TestCase):
    def redraw(self):
        pass

    def test_create_animation(self):
        self.item = NPC(model='-o-', name='Dancer')
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.assertEqual(self.item.name, self.animation.animated_object.name)

    def test_start(self):
        self.item = NPC(model='-o-', name='Dancer')
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.start()
        self.assertEqual(self.animation.state, Constants.RUNNING)

    def test_pause(self):
        self.item = NPC(model='-o-', name='Dancer')
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.pause()
        self.assertEqual(self.animation.state, Constants.PAUSED)

    def test_stop(self):
        self.item = NPC(model='-o-', name='Dancer')
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.stop()
        self.assertEqual(self.animation.state, Constants.STOPPED)

    def test_add_frame(self):
        self.item = NPC(model='-o-', name='Dancer')
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.add_frame('\\o-')
        with self.assertRaises(Exception) as context:
            self.animation.add_frame(2)
        self.assertTrue('must be a string' in str(context.exception))

    def test_search_frame(self):
        self.item = NPC(model='-o-', name='Dancer')
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.add_frame('-o-')
        self.animation.add_frame('\\o-')
        self.animation.add_frame('\\o-')
        self.assertEqual(self.animation.search_frame('\\o-'), 1)
        self.assertNotEqual(self.animation.search_frame('\\o-'), 2)
        with self.assertRaises(Exception) as context:
            self.animation.search_frame(2)
        self.assertTrue('must be a string' in str(context.exception))

    def test_remove_frame(self):
        self.item = NPC(model='-o-', name='Dancer')
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.add_frame('-o-')
        self.animation.add_frame('\\o-')
        self.animation.add_frame('\\o\\')
        self.animation.add_frame('|o|')
        self.animation.add_frame('/o/')
        self.animation.add_frame('-o/')
        with self.assertRaises(Exception) as context:
            self.animation.remove_frame(999)
        self.assertTrue('out of range' in str(context.exception))
        self.assertEqual(self.animation.remove_frame(0), '-o-')
        self.animation.next_frame()
        self.animation.next_frame()
        self.assertEqual(self.animation.remove_frame(2), '|o|')
        self.assertEqual(self.animation.current_frame(), '\\o\\')
        self.assertEqual(self.animation.next_frame(), '/o/')

    def test_current_frame(self):
        self.item = NPC(model='-o-', name='Dancer')
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.add_frame('-o-')
        self.animation.add_frame('\\o-')
        self.animation.add_frame('\\o\\')
        self.animation.add_frame('|o|')
        self.assertEqual(self.animation.current_frame(), '-o-')
        self.animation.next_frame()
        self.assertEqual(self.animation.current_frame(), '\\o-')

    def test_next_frame(self):
        self.item = NPC(model='-o-', name='Dancer')
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.add_frame('-o-')
        self.animation.add_frame('\\o-')
        self.animation.add_frame('\\o\\')
        self.animation.add_frame('|o|')
        self.assertEqual(self.animation.next_frame(), '\\o-')
        self.animation.pause()
        self.assertEqual(self.animation.next_frame(), '\\o-')
        self.animation.stop()
        self.assertIsNone(self.animation.next_frame())
        self.animation.animated_object = 'This is going to break!'
        with self.assertRaises(Exception) as context:
            self.animation.next_frame()
        self.assertTrue(
            'needs to be a sub class of BoardItem' in str(context.exception))

    def test_play_all(self):
        self.item = NPC(model='-o-', name='Dancer')
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.add_frame('-o-')
        self.animation.add_frame('\\o-')
        self.animation.add_frame('\\o\\')
        self.animation.add_frame('|o|')
        self.assertTrue(self.animation.play_all())
        self.animation.pause()
        self.assertFalse(self.animation.play_all())
        self.animation.stop()
        self.assertFalse(self.animation.play_all())
        self.animation = Animation(animated_object='breaking',
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        with self.assertRaises(Exception) as context:
            self.animation.play_all()
        self.assertTrue(
            'needs to be a sub class of BoardItem' in str(context.exception))

        self.animation = Animation(animated_object=self.item,
                                   refresh_screen='breaking',
                                   display_time=0.5)
        with self.assertRaises(Exception) as context:
            self.animation.play_all()
        self.assertTrue('needs to be a callback function reference' in str(
            context.exception))
예제 #2
0
class TestAnimation(unittest.TestCase):
    def redraw(self):
        pass

    def test_create_animation(self):
        self.item = NPC(model="-o-", name="Dancer")
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.assertEqual(self.item.name, self.animation.animated_object.name)

    def test_start(self):
        self.item = NPC(model="-o-", name="Dancer")
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.start()
        self.assertEqual(self.animation.state, Constants.RUNNING)

    def test_pause(self):
        self.item = NPC(model="-o-", name="Dancer")
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.pause()
        self.assertEqual(self.animation.state, Constants.PAUSED)

    def test_stop(self):
        self.item = NPC(model="-o-", name="Dancer")
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.stop()
        self.assertEqual(self.animation.state, Constants.STOPPED)

    def test_add_frame(self):
        self.item = NPC(model="-o-", name="Dancer")
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.add_frame("\\o-")
        with self.assertRaises(Exception) as context:
            self.animation.add_frame(2)
        self.assertTrue("must be a string" in str(context.exception))

    def test_search_frame(self):
        self.item = NPC(model="-o-", name="Dancer")
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.add_frame("-o-")
        self.animation.add_frame("\\o-")
        self.animation.add_frame("\\o-")
        self.assertEqual(self.animation.search_frame("\\o-"), 1)
        self.assertNotEqual(self.animation.search_frame("\\o-"), 2)
        with self.assertRaises(Exception) as context:
            self.animation.search_frame(2)
        self.assertTrue("must be a string" in str(context.exception))

    def test_remove_frame(self):
        self.item = NPC(model="-o-", name="Dancer")
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.add_frame("-o-")
        self.animation.add_frame("\\o-")
        self.animation.add_frame("\\o\\")
        self.animation.add_frame("|o|")
        self.animation.add_frame("/o/")
        self.animation.add_frame("-o/")
        with self.assertRaises(Exception) as context:
            self.animation.remove_frame(999)
        self.assertTrue("out of range" in str(context.exception))
        self.assertEqual(self.animation.remove_frame(0), "-o-")
        self.animation.next_frame()
        self.animation.next_frame()
        self.assertEqual(self.animation.remove_frame(2), "|o|")
        self.assertEqual(self.animation.current_frame(), "\\o\\")
        self.assertEqual(self.animation.next_frame(), "/o/")

    def test_current_frame(self):
        self.item = NPC(model="-o-", name="Dancer")
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.add_frame("-o-")
        self.animation.add_frame("\\o-")
        self.animation.add_frame("\\o\\")
        self.animation.add_frame("|o|")
        self.assertEqual(self.animation.current_frame(), "-o-")
        self.animation.next_frame()
        self.assertEqual(self.animation.current_frame(), "\\o-")

    def test_next_frame(self):
        self.item = NPC(model="-o-", name="Dancer")
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.add_frame("-o-")
        self.animation.add_frame("\\o-")
        self.animation.add_frame("\\o\\")
        self.animation.add_frame("|o|")
        self.assertEqual(self.animation.next_frame(), "\\o-")
        self.animation.pause()
        self.assertEqual(self.animation.next_frame(), "\\o-")
        self.animation.stop()
        self.assertIsNone(self.animation.next_frame())
        self.animation.animated_object = "This is going to break!"
        with self.assertRaises(Exception) as context:
            self.animation.next_frame()
        self.assertTrue(
            "needs to be a sub class of BoardItem" in str(context.exception))

    def test_play_all(self):
        self.item = NPC(model="-o-", name="Dancer")
        self.animation = Animation(animated_object=self.item,
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        self.animation.add_frame("-o-")
        self.animation.add_frame("\\o-")
        self.animation.add_frame("\\o\\")
        self.animation.add_frame("|o|")
        self.assertTrue(self.animation.play_all())
        self.animation.pause()
        self.assertFalse(self.animation.play_all())
        self.animation.stop()
        self.assertFalse(self.animation.play_all())
        self.animation = Animation(animated_object="breaking",
                                   refresh_screen=self.redraw,
                                   display_time=0.5)
        with self.assertRaises(Exception) as context:
            self.animation.play_all()
        self.assertTrue(
            "needs to be a sub class of BoardItem" in str(context.exception))

        self.animation = Animation(animated_object=self.item,
                                   refresh_screen="breaking",
                                   display_time=0.5)
        with self.assertRaises(Exception) as context:
            self.animation.play_all()
        self.assertTrue("needs to be a callback function reference" in str(
            context.exception))