def test_GraceContainer_parentage_01():
    """
    Lone grace container main leaf is none.
    """

    grace_container = abjad.GraceContainer("c'4 d'4 e'4 f'4")
    assert grace_container._main_leaf is None
def test_LilyPondParser__functions__grace_01():

    target = abjad.Container(
        [abjad.Note("c'4"),
         abjad.Note("d'4"),
         abjad.Note("e'2")])

    grace = abjad.GraceContainer([abjad.Note("g''16"), abjad.Note("fs''16")])

    abjad.attach(grace, target[2])

    assert format(target) == abjad.String.normalize(r"""
        {
            c'4
            d'4
            \grace {
                g''16
                fs''16
            }
            e'2
        }
        """)

    string = r"{ c'4 d'4 \grace { g''16 fs''16} e'2 }"
    parser = abjad.parser.LilyPondParser()
    result = parser(string)
    assert format(target) == format(result) and target is not result
def test_GraceContainer_parentage_03():
    """
    Grace containers bound to leaf have their correct main leaf after
    assignment.
    """

    note = abjad.Note(1, (1, 4))
    after_grace = abjad.AfterGraceContainer([abjad.Note("e'16")])
    abjad.attach(after_grace, note)
    grace = abjad.GraceContainer([abjad.Note("e'16")])
    abjad.attach(grace, note)
    assert after_grace._main_leaf is note
    assert grace._main_leaf is note
    after_grace[:] = []
    notes = [abjad.Note("c'8"), abjad.Note("d'8")]
    after_grace.extend(notes)
    grace[:] = []
    notes = [abjad.Note("c'8"), abjad.Note("d'8")]
    grace.extend(notes)
    assert after_grace._main_leaf is note
    assert grace._main_leaf is note
    after_grace[:] = []
    grace[:] = []
    assert after_grace._main_leaf is note
    assert grace._main_leaf is note
Beispiel #4
0
def test_Note___copy___05():
    """
    Deepcopy orphan note.
    """

    note = abjad.Note("c'4")
    articulation = abjad.Articulation('staccato')
    abjad.attach(articulation, note)
    grace = abjad.GraceContainer("d'16")
    abjad.attach(grace, note)
    abjad.override(note).note_head.color = 'red'

    assert format(note) == abjad.String.normalize(r"""
        \grace {
            d'16
        }
        \once \override NoteHead.color = #red
        c'4
        - \staccato
        """)

    new_note = copy.deepcopy(note)

    assert not new_note is note
    assert format(new_note) == format(note)
def test_Leaf__split_by_durations_15():
    """
    Grace notes are removed from second split leaf.
    """

    note = abjad.Note("c'4")
    grace = abjad.GraceContainer([abjad.Note(0, (1, 32))])
    abjad.attach(grace, note)

    new_leaves = note._split_by_durations([abjad.Duration(1, 16)])
    staff = abjad.Staff(new_leaves)

    assert format(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            \grace {
                c'32
            }
            c'16
            ~
            c'8.
        }
        """), print(format(staff))

    abjad.inspect(staff).wellformed()
Beispiel #6
0
def test_scoretools_Container_append_06():
    r'''Can not insert grace container into container.
    '''

    staff = abjad.Staff("c' d' e'")
    grace_container = abjad.GraceContainer("f'16 g'")

    assert pytest.raises(Exception, 'staff.append(grace_container)')
def test_scoretools_GraceContainer_06():
    r'''Grace containers can be appended.
    '''

    grace_container = abjad.GraceContainer("c'8 c'8")
    note = abjad.Note(1, (1, 4))
    grace_container.append(note)
    assert len(grace_container) == 3
    assert grace_container[-1] is note
def test_scoretools_GraceContainer_07():
    r'''Grace containers can be extended.
    '''

    grace_container = abjad.GraceContainer("c'8 c'8")
    ns = abjad.Note(1, (1, 4)) * 2
    grace_container.extend(ns)
    assert len(grace_container) == 4
    assert tuple(grace_container[-2:]) == tuple(ns)
Beispiel #9
0
def test_Container_append_06():
    """
    Can not insert grace container into container.
    """

    staff = abjad.Staff("c' d' e'")
    grace_container = abjad.GraceContainer("f'16 g'")

    with pytest.raises(Exception):
        staff.append(grace_container)
Beispiel #10
0
def test_GraceContainer_07():
    """
    Grace containers can be extended.
    """

    grace_container = abjad.GraceContainer("c'8 c'8")
    ns = abjad.Note(1, (1, 4)) * 2
    grace_container.extend(ns)
    assert len(grace_container) == 4
    assert tuple(grace_container[-2:]) == tuple(ns)
Beispiel #11
0
def test_GraceContainer_06():
    """
    Grace containers can be appended.
    """

    grace_container = abjad.GraceContainer("c'8 c'8")
    note = abjad.Note(1, (1, 4))
    grace_container.append(note)
    assert len(grace_container) == 3
    assert grace_container[-1] is note
Beispiel #12
0
def test_GraceContainer_02():

    grace_container = abjad.GraceContainer("c'8 c'8 c'8")
    assert format(grace_container) == abjad.String.normalize(r"""
        \grace {
            c'8
            c'8
            c'8
        }
        """)
def test_scoretools_GraceContainer_02():

    grace_container = abjad.GraceContainer("c'8 c'8 c'8")
    assert format(grace_container) == abjad.String.normalize(r'''
        \grace {
            c'8
            c'8
            c'8
        }
        ''')
Beispiel #14
0
def test_scoretools_GraceContainer_parentage_02():
    r'''Grace containers bound to leaf do have parent.
    '''

    note = abjad.Note(1, (1, 4))
    grace_container = abjad.GraceContainer()
    abjad.attach(grace_container, note)
    grace_container = abjad.inspect(note).get_grace_container()
    assert isinstance(grace_container, abjad.GraceContainer)
    assert grace_container._carrier is note
    assert grace_container._carrier is note
def test_GraceContainer_parentage_02():
    """
    Grace containers bound to leaf do have parent.
    """

    note = abjad.Note(1, (1, 4))
    grace_container = abjad.GraceContainer()
    abjad.attach(grace_container, note)
    grace_container = abjad.inspect(note).grace_container()
    assert isinstance(grace_container, abjad.GraceContainer)
    assert grace_container._main_leaf is note
    assert grace_container._main_leaf is note
Beispiel #16
0
def test_scoretools_Leaf__split_by_durations_17():
    r'''Grace notes are removed from second split leaf.
    '''

    note = abjad.Note("c'4")
    grace = abjad.GraceContainer([abjad.Note(0, (1, 32))])
    abjad.attach(grace, note)
    halves = note._split_by_durations([abjad.Duration(1, 16)])

    assert len(halves[0]) == 1
    assert len(halves[1]) == 1
    grace_container = abjad.inspect(halves[0][0]).get_grace_container()
    assert len(grace_container) == 1
    assert not hasattr(halves[1][0], 'grace') is None
Beispiel #17
0
def test_Note_grace_01():
    """
    Attaches one grace note.
    """

    note = abjad.Note("c'4")
    grace_container = abjad.GraceContainer([abjad.Note(2, (1, 16))])
    abjad.attach(grace_container, note)

    assert format(note) == abjad.String.normalize(r"""
        \grace {
            d'16
        }
        c'4
        """)
def test_scoretools_Note_grace_01():
    r'''Attaches one grace note.
    '''

    note = abjad.Note("c'4")
    grace_container = abjad.GraceContainer([abjad.Note(2, (1, 16))])
    abjad.attach(grace_container, note)

    assert format(note) == abjad.String.normalize(
        r'''
        \grace {
            d'16
        }
        c'4
        '''
        )
def test_scoretools_GraceContainer_01():

    notes = [
        abjad.Note(0, (1, 16)),
        abjad.Note(2, (1, 16)),
        abjad.Note(4, (1, 16))
    ]
    grace_container = abjad.GraceContainer(notes)

    assert format(grace_container) == abjad.String.normalize(r'''
        \grace {
            c'16
            d'16
            e'16
        }
        ''')

    assert isinstance(grace_container, abjad.Container)
    assert len(grace_container) == 3
def test_scoretools_Note_grace_02():
    r'''Attaches several grace notes.
    '''

    note = abjad.Note("c'4")
    grace_notes = [abjad.Note(0, (1, 16)), abjad.Note(2, (1, 16)), abjad.Note(4, (1, 16))]
    grace_container = abjad.GraceContainer(grace_notes)
    abjad.attach(grace_container, note)

    assert format(note) == abjad.String.normalize(
        r'''
        \grace {
            c'16
            d'16
            e'16
        }
        c'4
        '''
        )
Beispiel #21
0
def test_Note___copy___06():
    """
    Deepcopy note in score.
    """

    staff = abjad.Staff("c'8 [ c'8 e'8 f'8 ]")
    note = staff[0]
    articulation = abjad.Articulation("staccato")
    abjad.attach(articulation, note)
    grace = abjad.GraceContainer("d'16")
    abjad.attach(grace, note)
    abjad.override(note).note_head.color = "red"

    assert format(staff) == abjad.String.normalize(
        r"""
        \new Staff
        {
            \grace {
                d'16
            }
            \once \override NoteHead.color = #red
            c'8
            - \staccato
            [
            c'8
            e'8
            f'8
            ]
        }
        """
    )

    new_note = copy.deepcopy(note)

    assert new_note is not note
    assert abjad.inspect(note).parentage().parent is staff
    assert abjad.inspect(new_note).parentage().parent is not staff
    assert isinstance(abjad.inspect(new_note).parentage().parent, abjad.Staff)
    assert format(new_note) == format(note)
    assert format(abjad.inspect(note).parentage().parent) == format(
        abjad.inspect(new_note).parentage().parent
    )
Beispiel #22
0
def test_Note_grace_02():
    """
    Attaches several grace notes.
    """

    note = abjad.Note("c'4")
    grace_notes = [
        abjad.Note(0, (1, 16)),
        abjad.Note(2, (1, 16)),
        abjad.Note(4, (1, 16))
    ]
    grace_container = abjad.GraceContainer(grace_notes)
    abjad.attach(grace_container, note)

    assert format(note) == abjad.String.normalize(r"""
        \grace {
            c'16
            d'16
            e'16
        }
        c'4
        """)
Beispiel #23
0
def test_scoretools_GraceContainer_parentage_03():
    r'''Grace containers bound to leaf have their correct carrier
    after assignment.
    '''

    note = abjad.Note(1, (1, 4))
    after_grace = abjad.AfterGraceContainer([abjad.Note("e'16")])
    abjad.attach(after_grace, note)
    grace = abjad.GraceContainer([abjad.Note("e'16")])
    abjad.attach(grace, note)
    assert after_grace._carrier is note
    assert grace._carrier is note
    after_grace[:] = []
    notes = [abjad.Note("c'8"), abjad.Note("d'8")]
    after_grace.extend(notes)
    grace[:] = []
    notes = [abjad.Note("c'8"), abjad.Note("d'8")]
    grace.extend(notes)
    assert after_grace._carrier is note
    assert grace._carrier is note
    after_grace[:] = []
    grace[:] = []
    assert after_grace._carrier is note
    assert grace._carrier is note
Beispiel #24
0
def test_scoretools_GraceContainer_parentage_01():
    r'''Lone grace container carrier is none.
    '''

    gracecontainer = abjad.GraceContainer("c'4 d'4 e'4 f'4")
    assert gracecontainer._carrier is None