示例#1
0
class TestStepping(unittest.TestCase):
    def setUp(self):
        self.seq = Seq()
        # set the velocity of all steps to 100
        for i in range(16):
            self.seq.select_step(i)
        self.seq.set_velocity(100)
        for i in range(16):
            self.seq.deselect_step(i)
        # now go through and give each a different note
        for i in range(16):
            self.seq.select_step(i)
            self.seq.set_note(60 + i)
            self.seq.deselect_step(i)

    def test_each_step_calls_next_step(self):
        for i in range(16):
            step = self.seq.step()
            self.assertEqual(step.note, 60 + i)

    def test_steps_wrap(self):
        for i in range(50):
            step = self.seq.step()
            self.assertEqual(step.note, 60 + i % 16)

    def test_step_count_can_change(self):
        self.seq.step_count = 7
        for i in range(50):
            step = self.seq.step()
            self.assertEqual(step.note, 60 + i % 7)

    def test_step_resets_if_current_step_is_greater_than_step_count(self):
        self.seq.step_count = 16
        for i in range(12):
            self.seq.step()
        self.seq.step_count = 10
        step = self.seq.step()
        self.assertEqual(step.note, 60)