def test_2(self): cardinality = z.Schema(min_=z.N, max_=unlimitedNat) # TODO: positional args not implemented # ztn = cardinality(0, many) ztn = cardinality(min_=0, max_=many) # TODO: This fails half the time because dictionaries aren't ordered # self.assertEqual("[min_=0, max_=many ⟨⟨ None ⟩⟩ ]", str(ztn)) oto = cardinality(min_=1, max_=unlimitedNat(num=1)) oc = Optional(cardinality)(cardinality(min_=1, max_=unlimitedNat(num=1))) print(oc)
def test_opt_instance(self): def getNext(f, l): for e in l: if f(e): return e return None a = sctId(15) a_1 = 15 b = Optional(reverseFlag) c = Optional(cardinality)() one = unlimitedNat(num=1) d = cardinality(min_=1, max_=one) e = Optional(cardinality)(cardinality(min_=1, max_=unlimitedNat(num=1))) getNext(lambda e: Optional(cardinality).has_member(e), [a, a_1, b, c, d, e])
def visitCardinality(self, ctx): # cardinality : '[' NONNEGATIVEINTEGERVALUE TO (NONNEGATIVEINTEGERVALUE | MANY) ']' ; # NONNEGATIVEINTEGERVALUE : '0' | DIGITNONZERO DIGIT* ; # min_ = int(str(ctxNONNEGATIVEINTEGERVALUE())) # max_ = self.visit(ctx.getChild(1)) # max_ = unlimitedNat(num=N(int(str(max_v)))) if max_v != many else unlimitedNat(many=None) min_ = int(str(ctx.getChild(1))) mx = str(ctx.getChild(3)) max_ = unlimitedNat(num=int(mx)) if N.has_member(mx) else unlimitedNat(many=None) return cardinality(min_=min_, max_=max_)