Example #1
0
def test_splice_illegal():
    # Try to splice onto a descendant of the source node.
    strain = Strain(
        (
            (
                (),
            ),
        )
    )
    assert_raises(
        IndexError,
        lambda: strain.splice([0], [0, 0])
    )

    # Try to create a node with too many children.
    strain = Strain(
        (
            (),
            (
                (),
            ),
        )
    )
    assert_raises(
        ValueError,
        lambda: strain.splice([1, 0], [0])
    )
Example #2
0
def test_splice():
    strain = Strain(
        (
            (
                (),
            ),
        ))
    strain.splice([0, 0], [1])
    assert_equal(
        strain.as_tuple(),
        (
            (),
            (),
        )
    )

    strain = Strain(
        (
            (),
            (),
        )
    )
    strain.splice([0], [0, 0])
    assert_equal(
        strain.as_tuple(),
        (
            (
                (),
            ),
        )
    )

    strain = Strain(
        (
            (),
            (
                (),
                (),
            ),
        )
    )
    strain.splice([1], [0, 0])
    assert_equal(
        strain.as_tuple(),
        (
            (
                (
                    (),
                    (),
                ),
            ),
        )
    )

    strain = Strain(
        (
            (
                (),
            ),
            (),
        )
    )
    strain.splice([0], [1])
    assert_equal(
        strain.as_tuple(),
        (
            (),
            (
                (),
            ),
        )
    )