コード例 #1
0
ファイル: TestZ.py プロジェクト: sotty/FormalExpressionSpec
 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)
コード例 #2
0
ファイル: TestZ.py プロジェクト: sotty/FormalExpressionSpec
    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])
コード例 #3
0
 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_)