3 from unittest import main
4 from numpy.testing import TestCase, assert_equal
5 from aubio import slice_source_at_stamps
6 from .utils import count_files_in_directory, get_default_test_sound
7 from .utils import count_samples_in_directory, count_samples_in_file
14 class aubio_slicing_test_case(TestCase):
17 self.source_file = get_default_test_sound(self)
18 self.output_dir = tempfile.mkdtemp(suffix = 'aubio_slicing_test_case')
20 def test_slice_start_only(self):
21 regions_start = [i*1000 for i in range(n_slices)]
22 slice_source_at_stamps(self.source_file, regions_start, output_dir = self.output_dir)
24 def test_slice_start_only_no_zero(self):
25 regions_start = [i*1000 for i in range(1, n_slices)]
26 slice_source_at_stamps(self.source_file, regions_start, output_dir = self.output_dir)
28 def test_slice_start_beyond_end(self):
29 regions_start = [i*1000 for i in range(1, n_slices)]
30 regions_start += [count_samples_in_file(self.source_file) + 1000]
31 slice_source_at_stamps(self.source_file, regions_start, output_dir = self.output_dir)
33 def test_slice_start_every_blocksize(self):
35 regions_start = [i*hopsize for i in range(1, n_slices)]
36 slice_source_at_stamps(self.source_file, regions_start, output_dir = self.output_dir,
40 original_samples = count_samples_in_file(self.source_file)
41 written_samples = count_samples_in_directory(self.output_dir)
42 total_files = count_files_in_directory(self.output_dir)
43 assert_equal(n_slices, total_files,
44 "number of slices created different from expected")
45 assert_equal(written_samples, original_samples,
46 "number of samples written different from number of original samples")
47 shutil.rmtree(self.output_dir)
49 class aubio_slicing_with_ends_test_case(TestCase):
52 self.source_file = get_default_test_sound(self)
53 self.output_dir = tempfile.mkdtemp(suffix = 'aubio_slicing_test_case')
55 def test_slice_start_and_ends_no_gap(self):
56 regions_start = [i*1000 for i in range(n_slices)]
57 regions_ends = [start - 1 for start in regions_start[1:]] + [1e120]
58 slice_source_at_stamps(self.source_file, regions_start, regions_ends,
59 output_dir = self.output_dir)
60 original_samples = count_samples_in_file(self.source_file)
61 written_samples = count_samples_in_directory(self.output_dir)
62 total_files = count_files_in_directory(self.output_dir)
63 assert_equal(n_slices, total_files,
64 "number of slices created different from expected")
65 assert_equal(written_samples, original_samples,
66 "number of samples written different from number of original samples")
68 def test_slice_start_and_ends_200_gap(self):
69 regions_start = [i*1000 for i in range(n_slices)]
70 regions_ends = [start + 199 for start in regions_start]
71 slice_source_at_stamps(self.source_file, regions_start, regions_ends,
72 output_dir = self.output_dir)
73 expected_samples = 200 * n_slices
74 written_samples = count_samples_in_directory(self.output_dir)
75 total_files = count_files_in_directory(self.output_dir)
76 assert_equal(n_slices, total_files,
77 "number of slices created different from expected")
78 assert_equal(written_samples, expected_samples,
79 "number of samples written different from number of original samples")
81 def test_slice_start_and_ends_overlaping(self):
82 regions_start = [i*1000 for i in range(n_slices)]
83 regions_ends = [start + 1199 for start in regions_start]
84 slice_source_at_stamps(self.source_file, regions_start, regions_ends,
85 output_dir = self.output_dir)
86 expected_samples = 1200 * n_slices
87 written_samples = count_samples_in_directory(self.output_dir)
88 total_files = count_files_in_directory(self.output_dir)
89 assert_equal(n_slices, total_files,
90 "number of slices created different from expected")
91 assert_equal(written_samples, expected_samples,
92 "number of samples written different from number of original samples")
95 shutil.rmtree(self.output_dir)
98 class aubio_slicing_wrong_starts_test_case(TestCase):
101 self.source_file = get_default_test_sound(self)
102 self.output_dir = tempfile.mkdtemp(suffix = 'aubio_slicing_test_case')
104 def test_slice_start_empty(self):
106 self.assertRaises(ValueError,
107 slice_source_at_stamps,
108 self.source_file, regions_start, output_dir = self.output_dir)
110 def test_slice_start_none(self):
112 self.assertRaises(ValueError,
113 slice_source_at_stamps,
114 self.source_file, regions_start, output_dir = self.output_dir)
117 shutil.rmtree(self.output_dir)
119 class aubio_slicing_wrong_ends_test_case(TestCase):
122 self.source_file = get_default_test_sound(self)
123 self.output_dir = tempfile.mkdtemp(suffix = 'aubio_slicing_test_case')
125 def test_slice_wrong_ends(self):
126 regions_start = [i*1000 for i in range(1, n_slices)]
128 self.assertRaises (ValueError,
129 slice_source_at_stamps, self.source_file, regions_start, regions_end,
130 output_dir = self.output_dir)
132 def test_slice_no_ends(self):
133 regions_start = [i*1000 for i in range(1, n_slices)]
135 slice_source_at_stamps (self.source_file, regions_start, regions_end,
136 output_dir = self.output_dir)
137 total_files = count_files_in_directory(self.output_dir)
138 assert_equal(n_slices, total_files,
139 "number of slices created different from expected")
140 original_samples = count_samples_in_file(self.source_file)
141 written_samples = count_samples_in_directory(self.output_dir)
142 assert_equal(written_samples, original_samples,
143 "number of samples written different from number of original samples")
146 shutil.rmtree(self.output_dir)
148 if __name__ == '__main__':