Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 5
0
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()
Ejemplo n.º 6
0
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()
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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)