def test_song_items(self): region = as_region(' [C] c e | [Am] ') song_items = list(SongItems.parse(region)) expected_song_items = [ Chord(ScaleNote(0), descriptor=''), Note(0), Note(2), BarLine(), Chord(ScaleNote(5), descriptor='m') ] self.assertEquals(song_items, expected_song_items) self.assertEquals(song_items[0].source.value, '[C]') self.assertEquals(song_items[3].source.value, '|')
def test_subticks(self): song_lines = """ *song: tempo_bpm=120, ticks_per_beat=4, subticks_per_tick = 5 | [C] c """ parse_string = StringToParse('test_string', song_lines) song = Song.parse(parse_string) self.assertEqualsDisplaying( song, Song([ SongValuesCommand([ SetSongTempoBpm(120), SetSongTicksPerBeat(4), SetSongSubTicksPerTick(5) ]), BarLine(), Chord(ScaleNote(0), descriptor=''), Note(0, duration=(1, 1)) ]))
def test_parse_song_cut(self): song_lines = """ *song: tempo_bpm=120, ticks_per_beat=4 | [C] c e [:FAC] e ! c | [G] r2 """ parse_string = StringToParse('test_string', song_lines) song = Song.parse(parse_string) self.assertEqualsDisplaying( song, Song([ SongValuesCommand( [SetSongTempoBpm(120), SetSongTicksPerBeat(4)]), Note(0, duration=(1, 1)), BarLine(), Chord(ScaleNote(4), descriptor=''), Rest((2, 1)) ]))
def test_parse_song(self): parse_string = StringToParse('test_string', self.song_lines) song = Song.parse(parse_string) self.assertEqualsDisplaying( song, Song([ SongValuesCommand( [SetSongTempoBpm(120), SetSongTicksPerBeat(4)]), TrackValuesCommand('chord', [SetTrackOctave(2), SetTrackInstrument(40)]), TrackValuesCommand( 'bass', [SetTrackOctave(1), SetTrackVolume(90)]), Chord(ScaleNote(0), descriptor=''), Note(0, duration=(1, 1)), Note(2, duration=(1, 1)), Chord(ScaleNote(3), other_notes=[ScaleNote(5), ScaleNote(0)]), Note(2, duration=(1, 1)), Note(0, duration=(1, 2)), Note(0, duration=(1, 2)), BarLine(), Chord(ScaleNote(4), descriptor=''), Note(4, duration=(1, 1)), Rest((2, 1)) ])) chord_track = song.tracks['chord'] self.assertEquals(chord_track.instrument, 40) self.assertEquals(song.tracks['bass'].volume, 90) self.assertEquals(len(chord_track.items), 3) self.assertEquals(len(song.tracks['melody'].items), 6) self.assertEquals(chord_track.items[0].midi_notes, [36, 40, 43]) self.assertEquals(chord_track.items[1].bass_midi_note, 29) self.assertEquals(song.bar_ticks, [0, 16, 32])
def test_parse_barline_song_item(self): region = as_region("|") parsed_item = SongItem.parse(region) region = as_region("|") parsed_barline = BarLine.parse(region) self.assertEquals(parsed_item, parsed_barline)
def test_bar_source_and_unparse(self): region = as_region("|") bar_line = BarLine.parse(region) self.assertEquals(bar_line.source.value, bar_line.unparse())
def test_bar_line_parse_wrong(self): with self.parse_exception('Invalid bar line: "wrong"', "wrong"): region = as_region("wrong") BarLine.parse(region)
def test_bar_line_parse(self): with self.parse_exception('Invalid bar line: "|extra" (extra data "extra")', "extra"): region = as_region("|extra") BarLine.parse(region)
def test_bar_line_parse(self): region = as_region("|") bar_line = BarLine.parse(region) self.assertEquals(bar_line.source, region) self.assertEquals(bar_line, BarLine())
def test_bar_source_and_unparse(self): region = as_region('|') bar_line = BarLine.parse(region) self.assertEquals(bar_line.source.value, bar_line.unparse())
def test_parse_barline_song_item(self): region = as_region('|') parsed_item = SongItem.parse(region) region = as_region('|') parsed_barline = BarLine.parse(region) self.assertEquals(parsed_item, parsed_barline)
def test_bar_line_parse_wrong(self): with self.parse_exception('Invalid bar line: "wrong"', 'wrong'): region = as_region('wrong') BarLine.parse(region)
def test_bar_line_parse(self): with self.parse_exception( 'Invalid bar line: "|extra" (extra data "extra")', 'extra'): region = as_region('|extra') BarLine.parse(region)
def test_bar_line_parse(self): region = as_region('|') bar_line = BarLine.parse(region) self.assertEquals(bar_line.source, region) self.assertEquals(bar_line, BarLine())
def test_bar_line_unparse(self): self.assertEquals(BarLine().unparse(), '|')
def test_bar_equality(self): self.assertEquals(BarLine(), BarLine())