예제 #1
0
 def test_magic_method_add(self):
     self.assertEqual(
         type(
             core_events.SequentialEvent([]) +
             core_events.SequentialEvent([])),
         core_events.SequentialEvent,
     )
예제 #2
0
    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,
        )
예제 #3
0
    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)
예제 #4
0
 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)
예제 #5
0
 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),
     )
예제 #6
0
 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),
         ])
예제 #7
0
 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)
예제 #8
0
 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)
         ]),
     )
예제 #9
0
 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)
         ],
     )
예제 #10
0
 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)
         ],
     )
예제 #11
0
 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)]),
     )
예제 #12
0
 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)
             ])
예제 #13
0
    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)])
            ]),
        )
예제 #14
0
 def test_magic_method_mul(self):
     self.assertEqual(type(core_events.SequentialEvent([]) * 5),
                      core_events.SequentialEvent)