def test_magic_method_add(self): self.assertEqual( type( core_events.SequentialEvent([]) + core_events.SequentialEvent([])), core_events.SequentialEvent, )
def test_squash_in(self): self.assertRaises( TypeError, lambda: self.sequence.squash_in( 0, core_events.SimpleEvent(1.5), mutate=False), ) simultaneous_event_to_test = core_events.SimultaneousEvent([ core_events.SequentialEvent( [core_events.SimpleEvent(duration) for duration in (2, 3)]), core_events.SequentialEvent([ core_events.SimpleEvent(duration) for duration in (1, 1, 1, 2) ]), ]) expected_simultaneous_event = core_events.SimultaneousEvent([ core_events.SequentialEvent([ core_events.SimpleEvent(duration) for duration in (1, 1.5, 2.5) ]), core_events.SequentialEvent([ core_events.SimpleEvent(duration) for duration in (1, 1.5, 0.5, 2) ]), ]) self.assertEqual( simultaneous_event_to_test.squash_in(1, core_events.SimpleEvent(1.5), mutate=False), expected_simultaneous_event, )
def test_split_child_at(self): sequential_event0 = core_events.SequentialEvent( [core_events.SimpleEvent(3)]) sequential_event0.split_child_at(1) sequential_event_to_compare0 = core_events.SequentialEvent( [core_events.SimpleEvent(1), core_events.SimpleEvent(2)]) self.assertEqual(sequential_event0, sequential_event_to_compare0) sequential_event1 = core_events.SequentialEvent( [core_events.SimpleEvent(4), core_events.SimpleEvent(1)]) sequential_event1.split_child_at(3) sequential_event_to_compare1 = core_events.SequentialEvent([ core_events.SimpleEvent(3), core_events.SimpleEvent(1), core_events.SimpleEvent(1), ]) self.assertEqual(sequential_event1, sequential_event_to_compare1) sequential_event2 = core_events.SequentialEvent( [core_events.SimpleEvent(3), core_events.SimpleEvent(2)]) sequential_event2_copy = sequential_event2.copy() sequential_event2.split_at(3) self.assertEqual(sequential_event2, sequential_event2_copy)
def test_split_child_at(self): simultaneous_event0 = core_events.SimultaneousEvent( [core_events.SequentialEvent([core_events.SimpleEvent(3)])]) simultaneous_event0.split_child_at(1) simultaneous_event_to_compare0 = core_events.SimultaneousEvent([ core_events.SequentialEvent( [core_events.SimpleEvent(1), core_events.SimpleEvent(2)]) ]) self.assertEqual(simultaneous_event0, simultaneous_event_to_compare0)
def test_squash_in(self): self.assertEqual( self.sequence.squash_in(0.5, core_events.SimpleEvent(1), mutate=False), core_events.SequentialEvent([ core_events.SimpleEvent(duration) for duration in (0.5, 1, 1.5, 3) ]), ) self.assertEqual( self.sequence.squash_in(5, core_events.SimpleEvent(2), mutate=False), core_events.SequentialEvent([ core_events.SimpleEvent(duration) for duration in (1, 2, 2, 2) ]), ) self.assertEqual( self.sequence.squash_in(0, core_events.SimpleEvent(1.5), mutate=False), core_events.SequentialEvent([ core_events.SimpleEvent(duration) for duration in (1.5, 1.5, 3) ]), ) self.assertEqual( self.sequence.squash_in(6, core_events.SimpleEvent(1), mutate=False), core_events.SequentialEvent([ core_events.SimpleEvent(duration) for duration in (1, 2, 3, 1) ]), ) self.assertEqual( self.sequence.squash_in(0.5, core_events.SimpleEvent(0.25), mutate=False), core_events.SequentialEvent([ core_events.SimpleEvent(duration) for duration in (0.5, 0.25, 0.25, 2, 3) ]), ) self.assertRaises( ValueError, lambda: self.sequence.squash_in( 7, core_events.SimpleEvent(1.5), mutate=False), )
def setUp(self) -> None: self.sequence: core_events.SequentialEvent[ core_events.SimpleEvent] = core_events.SequentialEvent([ core_events.SimpleEvent(1), core_events.SimpleEvent(2), core_events.SimpleEvent(3), ])
def test_convert_sequential_event(self): sequential_event = core_events.SequentialEvent( [core_events.SimpleEvent(2) for _ in range(5)]) tempo_envelope = expenvelope.Envelope.from_levels_and_durations( levels=[ 30, core_parameters.TempoPoint(30), 60, core_parameters.TempoPoint(60), 30, 30, 60, 30, 60, core_parameters.TempoPoint(30, reference=1), core_parameters.TempoPoint(30, reference=2), # -> 60 BPM for ref=1 ], durations=[2, 0, 1, 0, 1, 2, 0, 2, 0, 2], curve_shapes=[0, 0, 0, 0, 0, 0, 0, 10, 0, -10], ) converter = core_converters.TempoConverter(tempo_envelope) converted_sequential_event = converter.convert(sequential_event) expected_durations = (4, 3, 3, 3.8000908039820196, 2.1999091960179804) self.assertEqual(converted_sequential_event.get_parameter("_duration"), expected_durations)
def test_squash_in_with_minor_differences(self): self.assertEqual( self.sequence.squash_in(6e-10, core_events.SimpleEvent(1), mutate=False), core_events.SequentialEvent([ core_events.SimpleEvent(duration) for duration in (6e-10, 1, 2 - 6e-10, 3) ]), )
def test_cut_up(self): result0 = core_events.SequentialEvent([ core_events.SimpleEvent(0.5), core_events.SimpleEvent(2), core_events.SimpleEvent(2), ]) result1 = core_events.SequentialEvent([core_events.SimpleEvent(1)]) self.assertEqual( [event.duration for event in result0], [ event.duration for event in self.sequence.cut_out(0.5, 5, mutate=False) ], ) self.assertEqual( [event.duration for event in result1], [ event.duration for event in self.sequence.cut_out(1, 2, mutate=False) ], )
def test_cut_off(self): result0 = core_events.SequentialEvent([ core_events.SimpleEvent(0.5), core_events.SimpleEvent(2), core_events.SimpleEvent(3), ]) result1 = core_events.SequentialEvent([core_events.SimpleEvent(1)]) result2 = core_events.SequentialEvent( [core_events.SimpleEvent(1), core_events.SimpleEvent(0.75)]) self.assertEqual( [event.duration for event in result0], [ event.duration for event in self.sequence.cut_off(0.5, 1, mutate=False) ], ) self.assertEqual( [event.duration for event in result1], [ event.duration for event in self.sequence.cut_off(1, 6, mutate=False) ], ) self.assertEqual( [event.duration for event in result1], [ event.duration for event in self.sequence.cut_off(1, 7, mutate=False) ], ) self.assertEqual( [event.duration for event in result2], [ event.duration for event in self.sequence.cut_off(1.75, 7, mutate=False) ], )
def test_tie_by(self): self.assertEqual( self.sequence.tie_by( lambda event_left, event_right: event_left.duration + 1 == event_right.duration, event_type_to_examine=core_events.SimpleEvent, mutate=False, ), core_events.SequentialEvent( [core_events.SimpleEvent(3), core_events.SimpleEvent(3)]), ) self.assertEqual( self.sequence.tie_by( lambda event_left, event_right: event_left.duration + 1 == event_right.duration, lambda event_to_survive, event_to_remove: None, event_type_to_examine=core_events.SimpleEvent, event_to_remove=False, mutate=False, ), core_events.SequentialEvent([core_events.SimpleEvent(3)]), ) self.assertEqual( self.sequence.tie_by( lambda event_left, event_right: event_left.duration + 1 == event_right.duration, lambda event_to_survive, event_to_remove: None, event_type_to_examine=core_events.SimpleEvent, event_to_remove=True, mutate=False, ), core_events.SequentialEvent( [core_events.SimpleEvent(1), core_events.SimpleEvent(3)]), )
def setUp(self) -> None: self.sequence: core_events.SimultaneousEvent[ core_events.SimpleEvent] = core_events.SimultaneousEvent([ core_events.SimpleEvent(1), core_events.SimpleEvent(2), core_events.SimpleEvent(3), ]) self.nested_sequence: core_events.SimultaneousEvent[ core_events.SequentialEvent[ core_events.SimpleEvent]] = core_events.SimultaneousEvent([ core_events.SequentialEvent([ core_events.SimpleEvent(1), core_events.SimpleEvent(2), core_events.SimpleEvent(3), ]) for _ in range(2) ])
def test_tie_by_for_nested_events(self): nested_sequential_event0 = core_events.SequentialEvent([ core_events.SequentialEvent( [core_events.SimpleEvent(3), core_events.SimpleEvent(2)]), core_events.SequentialEvent( [core_events.SimpleEvent(4), core_events.SimpleEvent(2)]), ]) nested_sequential_event0.tie_by( lambda event_left, event_right: event_left.duration - 1 == event_right.duration, event_type_to_examine=core_events.SimpleEvent, event_to_remove=True, ) self.assertEqual( nested_sequential_event0, core_events.SequentialEvent([ core_events.SequentialEvent([core_events.SimpleEvent(5)]), core_events.SequentialEvent( [core_events.SimpleEvent(4), core_events.SimpleEvent(2)]), ]), ) nested_sequential_event1 = core_events.SequentialEvent([ core_events.SequentialEvent( [core_events.SimpleEvent(3), core_events.SimpleEvent(2)]), core_events.SequentialEvent([core_events.SimpleEvent(5)]), ]) nested_sequential_event1.tie_by( lambda event_left, event_right: event_left.duration == event_right. duration, event_to_remove=True, ) self.assertEqual( nested_sequential_event1, core_events.SequentialEvent([ core_events.SequentialEvent( [core_events.SimpleEvent(6), core_events.SimpleEvent(4)]) ]), )
def test_magic_method_mul(self): self.assertEqual(type(core_events.SequentialEvent([]) * 5), core_events.SequentialEvent)