def testComplexWrite(self): counter1 = Counter.Counter("e+a") counter2 = Counter.Counter("+a") counter3 = Counter.Counter("+") counter4 = Counter.Counter("e+a") count = MeasureCount.MeasureCount() count.addBeats(Beat.Beat(counter1), 1) count.addBeats(Beat.Beat(counter2), 1) count.addBeats(Beat.Beat(counter3), 1) count.addBeats(Beat.Beat(counter4, 2), 1) handle = StringIO() indenter = fileUtils.Indenter(handle) dbfsv1.MeasureCountStructureV1().write(count, indenter) output = handle.getvalue().splitlines() self.assertEqual(output, ["START_MEASURE_COUNT", " BEAT_START", " NUM_TICKS 4", " COUNT |^e+a|", " BEAT_END", " BEAT_START", " NUM_TICKS 3", " COUNT |^+a|", " BEAT_END", " BEAT_START", " NUM_TICKS 2", " COUNT |^+|", " BEAT_END", " BEAT_START", " NUM_TICKS 2", " COUNT |^e+a|", " BEAT_END", "END_MEASURE_COUNT"])
def testReadSimple(self): data = """START_MEASURE_COUNT BEAT_START NUM_TICKS 4 COUNT |^e+a| BEAT_END BEAT_START NUM_TICKS 4 COUNT |^e+a| BEAT_END BEAT_START NUM_TICKS 4 COUNT |^e+a| BEAT_END BEAT_START NUM_TICKS 4 COUNT |^e+a| BEAT_END END_MEASURE_COUNT""" handle = StringIO(data) iterator = fileUtils.dbFileIterator(handle) count = dbfsv1.MeasureCountStructureV1().read(iterator) self.assert_(count.isSimpleCount()) self.assertEqual(len(count), 16) self.assertEqual(count.countString(), "1e+a2e+a3e+a4e+a")
def testSimpleWrite(self): myCounter = Counter.Counter("e+a") count = MeasureCount.makeSimpleCount(myCounter, 4) handle = StringIO() indenter = fileUtils.Indenter(handle) dbfsv1.MeasureCountStructureV1().write(count, indenter) output = handle.getvalue().splitlines() self.assertEqual(output, ["START_MEASURE_COUNT", " BEAT_START", " NUM_TICKS 4", " COUNT |^e+a|", " BEAT_END", " BEAT_START", " NUM_TICKS 4", " COUNT |^e+a|", " BEAT_END", " BEAT_START", " NUM_TICKS 4", " COUNT |^e+a|", " BEAT_END", " BEAT_START", " NUM_TICKS 4", " COUNT |^e+a|", " BEAT_END", "END_MEASURE_COUNT"])
def testRepeatBeats(self): data = """START_MEASURE_COUNT REPEAT_BEATS 3 BEAT_START COUNT |^e+a| BEAT_END END_MEASURE_COUNT""" handle = StringIO(data) iterator = fileUtils.dbFileIterator(handle) self.assertRaises(DBErrors.UnrecognisedLine, dbfsv1.MeasureCountStructureV1().read, iterator)
def testReadComplex(self): data = """START_MEASURE_COUNT BEAT_START COUNT |^e+a| BEAT_END BEAT_START COUNT |^+a| BEAT_END BEAT_START COUNT |^+| BEAT_END BEAT_START NUM_TICKS 2 COUNT |^e+a| BEAT_END END_MEASURE_COUNT""" handle = StringIO(data) iterator = fileUtils.dbFileIterator(handle) count = dbfsv1.MeasureCountStructureV1().read(iterator) self.assertFalse(count.isSimpleCount()) self.assertEqual(len(count), 11) self.assertEqual(count.countString(), "1e+a2+a3+4e")