def testInvalidParam(self): # startTime later than endTime: startTimes = [35, 11] endTimes = [30, 60] self.assertConfigureFails(Slicer(), { 'startTimes': startTimes, 'endTimes': endTimes }) self.assertConfigureFails(Slicer(), {'timeUnits': 'unknown'})
def slice(self, startTimes, endTimes): nSlices = len(startTimes) if nSlices != len(endTimes): print("Test cannot be computed") exit(1) input = range(max(endTimes)) # expected values: expected = [] orderedTimes = [] for i in range(nSlices): time = (startTimes[i], endTimes[i]) orderedTimes.append(time) orderedTimes = sorted(orderedTimes, lambda x, y: x[0] - y[0]) for i in range(nSlices): expected.append(input[orderedTimes[i][0]:orderedTimes[i][1]]) gen = VectorInput(input) slicer = Slicer(startTimes=startTimes, endTimes=endTimes, timeUnits="samples") pool = Pool() gen.data >> slicer.audio slicer.frame >> (pool, "data") run(gen) result = pool['data'] self.assertEqual(len(result), len(expected)) for i in range(nSlices): self.assertEqualVector(result[i], expected[i])
def Overflow(self): self.assertConfigureFails( Slicer(), { 'sampleRate': 44100, 'startTimes': [2147483649.0], 'endTimes': [2147483649.5], 'timeUnits': 'seconds' })
def testOneSample(self): startTimes = [0] endTimes = [1.0 / 44100.0] gen = VectorInput([1]) slicer = Slicer(startTimes=startTimes, endTimes=endTimes, timeUnits="seconds") pool = Pool() gen.data >> slicer.audio slicer.frame >> (pool, "data") run(gen) self.assertEqualVector(pool['data'], [1])
def testEmpty(self): startTimes = [0, 11] endTimes = [30, 60] gen = VectorInput([]) slicer = Slicer(startTimes=startTimes, endTimes=endTimes, timeUnits="samples") pool = Pool() gen.data >> slicer.audio slicer.frame >> (pool, "data") run(gen) self.assertEqualVector(pool.descriptorNames(), [])
def testEndTimePastEof(self): # no slices if times are beyond the input length: startTimes = [0] endTimes = [100] gen = VectorInput([1]) slicer = Slicer(startTimes=startTimes, endTimes=endTimes, timeUnits="seconds") pool = Pool() gen.data >> slicer.audio slicer.frame >> (pool, "data") run(gen) self.assertEqualVector(pool.descriptorNames(), [])
def testVeryLargeStartAndEndTimes(self): # no slices if times are beyond the input length: startTimes = [100] endTimes = [101] gen = VectorInput([1] * 50) slicer = Slicer(startTimes=startTimes, endTimes=endTimes, timeUnits="samples") pool = Pool() gen.data >> slicer.audio slicer.frame >> (pool, "data") run(gen) self.assertEqual(pool.descriptorNames(), [])