Exemple #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())
Exemple #2
0
def test_children_deriv_interleave():
    schema = After(
        Interleave(
            Element(
                Name({'ns': ''}, 'bar'),
                EMPTY),
            TEXT),
        EMPTY)

    doc = tuple()

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

    x = child_deriv(schema, '')
    print("x is", x)
    deriv = choice(schema, x) if whitespace('') else x
    assert str(children_deriv(schema, '')) == str(deriv)

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

    p1 = Interleave(
        Element(
            Name({'ns': ''}, 'bar'),
            EMPTY),
        TEXT)
    p2 = EMPTY

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

    p11 = Element(
        Name({'ns': ''}, 'bar'),
        EMPTY)
    p12 = TEXT

    deriv = choice(
        interleave(text_deriv(p11, ''), p12),
        interleave(p11, text_deriv(p12, '')))
    assert str(text_deriv(p1, '')) == str(deriv)

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

    deriv = NotAllowed()
    assert str(interleave(NotAllowed(), p12)) == str(deriv)

    deriv = TEXT
    assert str(text_deriv(p12, '')) == str(deriv)

    assert whitespace('') is True

    schema = After(
        Interleave(
            Element(
                Name({'ns': ''}, 'bar'),
                EMPTY),
            TEXT),
        EMPTY)

    deriv = Choice(
        After(
            Interleave(
                Element(
                    Name({'ns': ''}, 'bar'),
                    EMPTY),
                TEXT),
            EMPTY),
        After(
            Interleave(
                Element(
                    Name({'ns': ''}, 'bar'),
                    EMPTY),
                TEXT),
            EMPTY))

    print('is', children_deriv(schema, doc))
    print('should be', deriv)
    assert str(children_deriv(schema, doc)) == str(deriv)