<s> from unittest import TestCase <EOL> from sebastian . core import OFFSET_64 , MIDI_PITCH , DURATION_64 , HSeq <EOL> from sebastian . core . transforms import add , lilypond <EOL> from sebastian . lilypond . interp import parse <EOL> from sebastian . lilypond . write_lilypond import output , write <EOL> class TestLilyPondParsing ( TestCase ) : <EOL> def eq ( self , lilypond , answer ) : <EOL> """<STR_LIT>""" <EOL> result = parse ( lilypond ) <EOL> self . assertEqual ( len ( answer ) , len ( result ) ) <EOL> for i , event in enumerate ( answer ) : <EOL> r = result [ i ] . tuple ( OFFSET_64 , MIDI_PITCH , DURATION_64 ) <EOL> self . assertEqual ( event , r ) <EOL> def test_absolute_octave_entry ( self ) : <EOL> self . eq ( <EOL> "<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:16> , <NUM_LIT:50> , <NUM_LIT:16> ) , ( <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT> , <NUM_LIT:50> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT> , None , None ) <EOL> ] <EOL> ) <EOL> self . eq ( <EOL> "<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:32> , <NUM_LIT:64> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT:50> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT:50> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT> , None , None ) , <EOL> ] <EOL> ) <EOL> def test_duration ( self ) : <EOL> self . eq ( <EOL> "<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT:32> ) , ( <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT:32> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:64> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:64> ) , <EOL> ( <NUM_LIT> , None , None ) , <EOL> ] <EOL> ) <EOL> def test_more_durations ( self ) : <EOL> self . eq ( <EOL> "<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:8> ) , <EOL> ( <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:12> ) , <EOL> ( <NUM_LIT> , None , None ) , <EOL> ] <EOL> ) <EOL> def test_rests ( self ) : <EOL> self . eq ( <EOL> "<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:8> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT:64> , None , None ) , <EOL> ] <EOL> ) <EOL> self . eq ( <EOL> "<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:8> , <NUM_LIT> , <NUM_LIT:8> ) , ( <NUM_LIT:16> , <NUM_LIT:50> , <NUM_LIT:8> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:8> ) , <EOL> ( <NUM_LIT:32> , None , None ) , <EOL> ] <EOL> ) <EOL> def test_accidentals ( self ) : <EOL> self . eq ( <EOL> "<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:64> ) , ( <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT:64> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:64> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:64> ) , <EOL> ( <NUM_LIT> , None , None ) , <EOL> ] <EOL> ) <EOL> self . eq ( <EOL> "<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT:32> ) , <EOL> ( <NUM_LIT:64> , None , None ) , <EOL> ] <EOL> ) <EOL> def test_relative_octave_entry ( self ) : <EOL> self . eq ( <EOL> r"<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:16> , <NUM_LIT:50> , <NUM_LIT:16> ) , ( <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT:64> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT> , None , None ) , <EOL> ( <NUM_LIT> , None , None ) , <EOL> ] <EOL> ) <EOL> self . eq ( <EOL> r"<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT> , None , None ) , <EOL> ( <NUM_LIT> , None , None ) , <EOL> ] <EOL> ) <EOL> self . eq ( <EOL> r"<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT:64> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT> , None , None ) , <EOL> ( <NUM_LIT> , None , None ) , <EOL> ] <EOL> ) <EOL> self . eq ( <EOL> r"<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:32> ) , ( <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT:32> ) , ( <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT:32> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:32> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:32> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:32> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:32> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:32> ) , <EOL> ( <NUM_LIT> , None , None ) , <EOL> ( <NUM_LIT> , None , None ) , <EOL> ] <EOL> ) <EOL> def test_ties ( self ) : <EOL> self . eq ( <EOL> "<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:64> ) , <EOL> ( <NUM_LIT:64> , None , None ) , <EOL> ] <EOL> ) <EOL> def test_octave_check ( self ) : <EOL> import logging <EOL> logging . disable ( logging . WARN ) <EOL> self . eq ( <EOL> r"<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:32> ) , ( <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> ) , ( <NUM_LIT:64> , <NUM_LIT:64> , <NUM_LIT:32> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:32> ) , <EOL> ( <NUM_LIT> , None , None ) , <EOL> ( <NUM_LIT> , None , None ) , <EOL> ] <EOL> ) <EOL> logging . disable ( logging . NOTSET ) <EOL> def test_acciaccatura ( self ) : <EOL> self . eq ( <EOL> r"<STR_LIT>" , <EOL> [ <EOL> ( - <NUM_LIT:4> , <NUM_LIT:50> , <NUM_LIT:4> ) , ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT:16> , None , None ) , <EOL> ] <EOL> ) <EOL> def test_for_regression_of_a_bug_in_ordering_of_accidental_and_octave ( self ) : <EOL> self . eq ( <EOL> "<STR_LIT>" , <EOL> [ <EOL> ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:16> ) , <EOL> ( <NUM_LIT:16> , None , None ) , <EOL> ] <EOL> ) <EOL> class TestLilyPondWriting ( TestCase ) : <EOL> def test_output ( self ) : <EOL> pitches = HSeq ( { "<STR_LIT>" : n } for n in [ - <NUM_LIT:2> , <NUM_LIT:0> , <NUM_LIT:2> , - <NUM_LIT:3> ] ) <EOL> seq = pitches | add ( { "<STR_LIT>" : <NUM_LIT:5> , DURATION_64 : <NUM_LIT:16> } ) | lilypond ( ) <EOL> self . assertEqual ( output ( seq ) , "<STR_LIT>" ) <EOL> def test_write ( self ) : <EOL> import tempfile <EOL> pitches = HSeq ( { "<STR_LIT>" : n } for n in [ - <NUM_LIT:2> , <NUM_LIT:0> , <NUM_LIT:2> , - <NUM_LIT:3> ] ) <EOL> seq = pitches | add ( { "<STR_LIT>" : <NUM_LIT:5> , DURATION_64 : <NUM_LIT:16> } ) | lilypond ( ) <EOL> f = tempfile . NamedTemporaryFile ( suffix = "<STR_LIT>" , delete = False ) <EOL> write ( f . name , seq ) <EOL> with open ( f . name ) as g : <EOL> self . assertEqual ( g . read ( ) , "<STR_LIT>" ) <EOL> class TestLilyPondDisplay ( TestCase ) : <EOL> def test_display_skipped_on_empty ( self ) : <EOL> """<STR_LIT>""" <EOL> empty = HSeq ( { "<STR_LIT>" : n } for n in range ( <NUM_LIT:2> ) ) <EOL> seq = empty | lilypond ( ) <EOL> displayed = seq . display ( ) <EOL> self . assertTrue ( isinstance ( displayed , HSeq ) ) </s>
