from unittest import TestCase from glob import glob import wavinfo class TestCue(TestCase): def setUp(self) -> None: self.test_files = glob("tests/test_files/cue_chunks/*.wav") return super().setUp() def test_enumerate(self): file1 = "tests/test_files/cue_chunks/STE-000.wav" w1 = wavinfo.WavInfoReader(file1) self.assertIsNotNone(w1.cues) assert w1.cues is not None vals = list(w1.cues.each_cue()) self.assertEqual(vals, [(1,29616),(2,74592),(3,121200)]) def test_labels_notes(self): file = "tests/test_files/cue_chunks/izotoperx_cues_test.wav" w1 = wavinfo.WavInfoReader(file) self.assertIsNotNone(w1.cues) assert w1.cues is not None for name, _ in w1.cues.each_cue(): self.assertIn(name,[1,2,3]) label, note = w1.cues.label_and_note(name) if name == 1: self.assertEqual("Marker 1", label) self.assertIsNone(note) def test_range(self): file = "tests/test_files/cue_chunks/izotoperx_cues_test.wav" w1 = wavinfo.WavInfoReader(file) self.assertIsNotNone(w1.cues) assert w1.cues is not None self.assertEqual(w1.cues.range(3), 10000) def test_encoding_fallback(self): """ Added this after I noticed that iZotope RX seems to just encode "notes" as utf-8 without bothering to dump this info into the ltxt or specifying an encoding by some other means. """ file = "tests/test_files/cue_chunks/izotoperx_cues_test.wav" w = wavinfo.WavInfoReader(file, info_encoding='utf-8') expected = ("Лорем ипсум долор сит амет, тимеам вивендум хас ет, " "цу адолесценс дефинитионес еам.") assert w.cues is not None note = [n for n in w.cues.notes if n.name == 3] self.assertEqual(len(note), 1) self.assertEqual(note[0].text, expected) def test_label(self): file = "tests/test_files/cue_chunks/izotoperx_cues_test.wav" w = wavinfo.WavInfoReader(file) self.assertIsNotNone(w.cues) assert w.cues is not None self.assertEqual(len(w.cues.labels), 3) for label in w.cues.labels: self.assertIn(label.name, [1,2,3]) if label.name == 1: self.assertEqual(label.text, "Marker 1") elif label.name == 2: self.assertEqual(label.text, "Marker 2") elif label.name == 3: self.assertEqual(label.text, "Marker 3")