def test_LilyPondParser__spanners__Trill_01(): """ Successful trills, showing single leaf overlap. """ maker = abjad.NoteMaker() notes = maker(4 * [0], [(1, 4)]) target = abjad.Container(notes) abjad.trill_spanner(target[2:]) abjad.trill_spanner(target[:3]) assert format(target) == abjad.String.normalize(r""" { c'4 \startTrillSpan c'4 c'4 \stopTrillSpan \startTrillSpan c'4 \stopTrillSpan } """) parser = abjad.parser.LilyPondParser() result = parser(format(target)) assert format(target) == format(result) and target is not result
def test_LilyPondParser__spanners__Trill_02(): """ Swapped start and stop. """ maker = abjad.NoteMaker() notes = maker(4 * [0], [(1, 4)]) target = abjad.Container(notes) abjad.trill_spanner(target[2:]) abjad.trill_spanner(target[:3]) assert format(target) == abjad.String.normalize(r""" { c'4 \startTrillSpan c'4 c'4 \stopTrillSpan \startTrillSpan c'4 \stopTrillSpan } """) string = r"\relative c' { c \startTrillSpan c c \startTrillSpan \stopTrillSpan c \stopTrillSpan }" parser = abjad.parser.LilyPondParser() result = parser(string) assert format(target) == format(result) and target is not result
def test_LilyPondParser__spanners__Trill_01(): """ Successful trills, showing single leaf overlap. """ maker = abjad.NoteMaker() notes = maker(4 * [0], [(1, 4)]) target = abjad.Container(notes) abjad.trill_spanner(target[2:]) abjad.trill_spanner(target[:3]) assert format(target) == abjad.String.normalize( r""" { c'4 \startTrillSpan c'4 c'4 \stopTrillSpan \startTrillSpan c'4 \stopTrillSpan } """ ) parser = abjad.parser.LilyPondParser() result = parser(format(target)) assert format(target) == format(result) and target is not result
def test_LilyPondParser__spanners__Trill_02(): """ Swapped start and stop. """ maker = abjad.NoteMaker() notes = maker(4 * [0], [(1, 4)]) target = abjad.Container(notes) abjad.trill_spanner(target[2:]) abjad.trill_spanner(target[:3]) assert format(target) == abjad.String.normalize( r""" { c'4 \startTrillSpan c'4 c'4 \stopTrillSpan \startTrillSpan c'4 \stopTrillSpan } """ ) string = r"\relative c' { c \startTrillSpan c c \startTrillSpan \stopTrillSpan c \stopTrillSpan }" parser = abjad.parser.LilyPondParser() result = parser(string) assert format(target) == format(result) and target is not result
def test_Mutation_copy_03(): """ Three notes crossing measure boundaries. """ staff = abjad.Staff("abj: | 2/8 c'8 d'8 || 2/8 e'8 f'8 || 2/8 g'8 a'8 |") leaves = abjad.select(staff).leaves() abjad.slur(leaves) abjad.trill_spanner(leaves) abjad.beam(leaves) assert format(staff) == abjad.String.normalize(r""" \new Staff { { \time 2/8 c'8 ( \startTrillSpan [ d'8 } { \time 2/8 e'8 f'8 } { \time 2/8 g'8 a'8 ) \stopTrillSpan ] } } """), print(format(staff)) result = abjad.mutate(leaves[-3:]).copy() new = abjad.Staff(result) assert format(new) == abjad.String.normalize(r""" \new Staff { f'8 \time 2/8 g'8 a'8 ) \stopTrillSpan ] } """), print(format(new)) assert abjad.inspect(staff).wellformed() assert abjad.inspect(new).wellformed()
def test_Mutation_copy_01(): """ Deep copies components. Returns Python list of copied components. """ staff = abjad.Staff("abj: | 2/8 c'8 d'8 || 2/8 e'8 f'8 || 2/8 g'8 a'8 |") leaves = abjad.select(staff).leaves() abjad.slur(leaves) abjad.trill_spanner(leaves) abjad.beam(leaves) assert format(staff) == abjad.String.normalize(r""" \new Staff { { \time 2/8 c'8 ( \startTrillSpan [ d'8 } { \time 2/8 e'8 f'8 } { \time 2/8 g'8 a'8 ) \stopTrillSpan ] } } """), print(format(staff)) result = abjad.mutate(leaves[2:4]).copy() new = abjad.Staff(result) assert format(new) == abjad.String.normalize( r""" \new Staff { \time 2/8 e'8 f'8 } """, print(format(new)), ) assert abjad.inspect(staff).wellformed() assert abjad.inspect(new).wellformed()
def test_mutate_copy_02(): """ Copy one measure. """ staff = abjad.Staff( [ abjad.Container("c'8 d'"), abjad.Container("e'8 f'"), abjad.Container("g'8 a'"), ] ) for container in staff: time_signature = abjad.TimeSignature((2, 8)) abjad.attach(time_signature, container[0]) leaves = abjad.select(staff).leaves() abjad.slur(leaves) abjad.trill_spanner(leaves) abjad.beam(leaves) assert abjad.lilypond(staff) == abjad.String.normalize( r""" \new Staff { { \time 2/8 c'8 ( \startTrillSpan [ d'8 } { \time 2/8 e'8 f'8 } { \time 2/8 g'8 a'8 ) \stopTrillSpan ] } } """ ), print(abjad.lilypond(staff)) result = abjad.mutate.copy(staff[1:2]) new = abjad.Staff(result) assert abjad.lilypond(new) == abjad.String.normalize( r""" \new Staff { { \time 2/8 e'8 f'8 } } """ ), print(abjad.lilypond(new)) assert abjad.wf.wellformed(staff) assert abjad.wf.wellformed(new)
def test_mutate_copy_01(): """ Deep copies components. Returns Python list of copied components. """ staff = abjad.Staff( [ abjad.Container("c'8 d'"), abjad.Container("e'8 f'"), abjad.Container("g'8 a'"), ] ) for container in staff: time_signature = abjad.TimeSignature((2, 8)) abjad.attach(time_signature, container[0]) leaves = abjad.select(staff).leaves() abjad.slur(leaves) abjad.trill_spanner(leaves) abjad.beam(leaves) assert abjad.lilypond(staff) == abjad.String.normalize( r""" \new Staff { { \time 2/8 c'8 ( \startTrillSpan [ d'8 } { \time 2/8 e'8 f'8 } { \time 2/8 g'8 a'8 ) \stopTrillSpan ] } } """ ), print(abjad.lilypond(staff)) result = abjad.mutate.copy(leaves[2:4]) new = abjad.Staff(result) assert abjad.lilypond(new) == abjad.String.normalize( r""" \new Staff { \time 2/8 e'8 f'8 } """, print(abjad.lilypond(new)), ) assert abjad.wf.wellformed(staff) assert abjad.wf.wellformed(new)