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())
def test_group(): assert str(group(NotAllowed(), EMPTY)) == str(NotAllowed())