Esempio n. 1
0
def test_one_or_more_children_deriv():
    schema = After(
        Choice(
            EMPTY,
            OneOrMore(
                Element(
                    Name({'ns': ''}, 'bar'),
                    EMPTY))),
        EMPTY)

    doc = ('x', ElementNode(QName('', 'bar'), tuple(), ()))

    deriv = strip_children_deriv(schema, doc)
    assert str(children_deriv(schema, doc)) == str(deriv)

    x = child_deriv(schema, 'x')
    y = child_deriv(x, doc[1])
    assert str(strip_children_deriv(schema, doc)) == str(y)

    deriv = text_deriv(schema, 'x')
    assert str(child_deriv(schema, 'x')) == str(deriv)

    p1 = Choice(
        EMPTY,
        OneOrMore(
            Element(
                Name({'ns': ''}, 'bar'),
                EMPTY)))
    p2 = EMPTY

    deriv = after(text_deriv(p1, 'x'), p2)
    assert str(text_deriv(schema, 'x')) == str(deriv)

    p11 = EMPTY
    p12 = OneOrMore(
        Element(
            Name({'ns': ''}, 'bar'),
            EMPTY))
    deriv = choice(text_deriv(p11, 'x'), text_deriv(p12, 'x'))
    assert str(text_deriv(p1, 'x')) == str(deriv)

    assert str(text_deriv(p11, 'x')) == str(NotAllowed())

    p121 = Element(
        Name({'ns': ''}, 'bar'),
        EMPTY)

    deriv = group(text_deriv(p121, 'x'), choice(OneOrMore(p121), EMPTY))
    assert str(text_deriv(p12, 'x')) == str(deriv)

    assert str(text_deriv(p121, 'x')) == str(NotAllowed())
Esempio n. 2
0
def test_group():
    assert str(group(NotAllowed(), EMPTY)) == str(NotAllowed())