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)