def run_joker(examples):

    for s in examples:
        # make sure we can parse it
        parse(s)

        # now alter one letter
        for i in range(len(s)):
            s2 = replace_one(s, i, '~')

            try:
                parse(s2)

            except ContractSyntaxError as e:
                detected = e.where.col - 1
                displacement = i - detected
#                if  displacement < 0:
#                    print displacement
#                    print e
                assert displacement >= 0

                value = displacement * 1.0 / len(s)
                if displacement > 0:
                    print(e)
#                    assert False

                yield value
Beispiel #2
0
def run_joker(examples):

    for s in examples:
        # make sure we can parse it
        parse(s)

        # now alter one letter
        for i in range(len(s)):
            s2 = replace_one(s, i, '~')

            try:
                parse(s2)

            except ContractSyntaxError as e:
                detected = e.where.col - 1
                displacement = i - detected
                #                if  displacement < 0:
                #                    print displacement
                #                    print e
                assert displacement >= 0

                value = displacement * 1.0 / len(s)
                if displacement > 0:
                    print(e)


#                    assert False

                yield value
Beispiel #3
0
def test_equality_rvalue():
    c1 = parse('N+1')
    c2 = parse('N+2')
    c3 = parse('P+1')
    assert c1 == c1
    assert c2 == c2
    assert c3 == c3
    assert c1 != c2
    assert c1 != c3
    assert c2 != c3
Beispiel #4
0
 def test_equality_rvalue(self):
     c1 = parse('N+1')
     c2 = parse('N+2')
     c3 = parse('P+1')
     self.assertEqual(c1, c1)
     self.assertEqual(c2, c2)
     self.assertEqual(c3, c3)
     self.assertNotEqual(c1, c2)
     self.assertNotEqual(c1, c3)
     self.assertNotEqual(c2, c3)
Beispiel #5
0
 def test_equality_rvalue(self):
     c1 = parse('N+1')
     c2 = parse('N+2')
     c3 = parse('P+1')
     self.assertEqual(c1, c1)
     self.assertEqual(c2, c2)
     self.assertEqual(c3, c3)
     self.assertNotEqual(c1, c2)
     self.assertNotEqual(c1, c3)
     self.assertNotEqual(c2, c3)
def test_value_frozen_at_parsetime():
    p = 2
    c = parse('$p')
    p = 3

    check_isinstance(c, EqualTo)
    assert c.rvalue.value == 2

    c = parse('$p')
    check_isinstance(c, EqualTo)
    assert c.rvalue.value == 3
def test_value_frozen_at_parsetime():
    p = 2
    c = parse('$p')
    p = 3

    check_isinstance(c, EqualTo)
    assert c.rvalue.value == 2

    c = parse('$p')
    check_isinstance(c, EqualTo)
    assert c.rvalue.value == 3
def test_check():
    p = 2
    q = 4
    c = parse('list[$p](>$q)')

    c.check([5, 10])
    c.fail([5, 3])
def test_holds_reference():
    class Foo(object):
        pass
    c = parse('$Foo')
    check_isinstance(c, CheckType)
    
    assert c.types == Foo
def test_check():
    p = 2
    q = 4
    c = parse('list[$p](>$q)')

    c.check([5, 10])
    c.fail([5, 3])
    def __init__(self,
                 memberName,
                 default,
                 contract,
                 readOnly,
                 privateMemberName,
                 memberDelegate):
        """
    :type memberName: str
    :type readOnly: bool
    :type privateMemberName: str|None
    :type memberDelegate: IMemberDelegate

"""

        if privateMemberName is None:
            privateMemberName = '_%s' % memberName

        if contract is not None:
            contract = parse(contract)
            
        self._memberName = memberName
        self._default = default
        self._contract = contract
        self._readOnly = readOnly
        self._privateMemberName = privateMemberName
        self._memberDelegate = memberDelegate
def test_holds_reference():
    class Foo(object):
        pass

    c = parse('$Foo')
    check_isinstance(c, CheckType)

    assert c.types == Foo
Beispiel #13
0
    def test_as_decorator_with_kwargs(self):
        from contracts import parse

        @new_contract
        def less_than(value, thresh=1):
            return value < thresh

        p = parse('less_than(thresh=2)')
        p.check(1)
        p.fail(2)
Beispiel #14
0
 def test_as_decorator(self):
     @new_contract
     def even(x):
         return x % 2 == 0
     from contracts import parse
     p = parse('even')
     p.check(2)
     p.check(4)
     p.fail(3)
     p.check(2.0)
Beispiel #15
0
    def test_as_decorator_with_args_and_kwargs(self):
        from contracts import parse

        @new_contract
        def less_than_all(value, a, b, c=1, d=5):
            return value < min(a, b, c, d)

        p = parse('less_than_all(3, 4, c=5)')
        p.check(2)
        p.fail(3)
Beispiel #16
0
    def test_as_decorator_with_args(self):
        from contracts import parse

        @new_contract
        def greater_than(value, thresh):
            return value > thresh

        p = parse('greater_than(5)')
        p.check(6)
        p.fail(5)
Beispiel #17
0
    def test_as_decorator_multiple(self):
        @new_contract
        @contract(x='int')
        def even2(x):
            return x % 2 == 0

        from contracts import parse
        p = parse('even2')
        p.check(2)
        p.fail(3)
        p.fail(2.0) # now fails
Beispiel #18
0
def check_contract_pickable(contract):
    c = parse(contract)
    assert isinstance(c, Contract)
    try:
        s = pickle.dumps(c)
        c2 = pickle.loads(s)
    except TypeError as e:
        msg = "Could not pickle contract.\n"
        msg += "- string: %s\n" % c
        msg += "-   repr: %r\n" % c
        msg += "Exception: %s" % e
        raise Exception(msg)

    assert c == c2
def check_contract_pickable(contract):
    c = parse(contract)
    assert isinstance(c, Contract)
    try:
        s = pickle.dumps(c)
        c2 = pickle.loads(s)
    except TypeError as e:
        msg = 'Could not pickle contract.\n'
        msg += '- string: %s\n' % c
        msg += '-   repr: %r\n' % c
        msg += 'Exception: %s' % e
        raise Exception(msg)

    assert c == c2
Beispiel #20
0
    def __init__(self, memberName, default, contract, readOnly,
                 privateMemberName, memberDelegate):
        """
    :type memberName: str
    :type readOnly: bool
    :type privateMemberName: str|None
    :type memberDelegate: IMemberDelegate

"""

        if privateMemberName is None:
            privateMemberName = '_%s' % memberName

        if contract is not None:
            contract = parse(contract)

        self._memberName = memberName
        self._default = default
        self._contract = contract
        self._readOnly = readOnly
        self._privateMemberName = privateMemberName
        self._memberDelegate = memberDelegate
Beispiel #21
0
 def test_parse_1(self):
     contract = parse('>0')
     assert isinstance(contract, Contract)
     contract.check(2)
     self.assertRaises(ContractNotRespected, contract.check, 'ciao')
def test_invalid():
    with raises(ContractException):
        parse('$not_found')
def test_algebra():

    p = 2
    c = parse('list[$p]')

    assert c.length_contract.rvalue.value == 2
def test_invalid():
    parse('$not_found')
def test_algebra():

    p = 2
    c = parse('list[$p]')

    assert c.length_contract.rvalue.value == 2
def test_raw_parse():
    p = 2
    c = parse('$p')
    assert c.rvalue.value == 2
 def test_variables(self):
     for s in ['a', 'b', 'c', 'd', 'x', 'y']:
         self.assertEqual(parse(s), BindVariable(s, object))
         U = s.upper()
         self.assertEqual(parse(U), BindVariable(U, int))
Beispiel #28
0
 def test_parse_1(self):
     contract = parse('>0')
     assert isinstance(contract, Contract)
     contract.check(2)
     self.assertRaises(ContractNotRespected, contract.check, 'ciao')
def test_raw_parse():
    p = 2
    c = parse('$p')
    assert c.rvalue.value == 2
def test_holds_reference():
    class Foo(object):
        pass

    assert parse('$Foo').rvalue.value is Foo
Beispiel #31
0
    def test_repr_1(self):
        contract = parse(' list[N](int), N > 0')     

        ("%s" % contract)   # => 'list[N](int),N>0'
        ("%r" % contract)   # => And([List(BindVariable('N',int),...
 def test_binding_vs_ref2(self):
     self.assertEqual(parse('N'), BindVariable('N', int))
Beispiel #33
0
 def test_equality_contract(self):
     c1 = parse('list[C](str),C>0')
     c2 = parse('list[C](str),C>0')
     c3 = parse('list[R](str),R>0')
     self.assertEqual(c1, c2)
     self.assertNotEqual(c1, c3)
def test_binding_vs_ref():
    assert parse('list[N]') == List(BindVariable('N', int), None)
 def test_binding_vs_ref2(self):
     self.assertEqual(parse('N'), BindVariable('N', int))
Beispiel #36
0
 def test_equality_contract(self):
     c1 = parse('list[C](str),C>0')
     c2 = parse('list[C](str),C>0')
     c3 = parse('list[R](str),R>0')
     self.assertEqual(c1, c2)
     self.assertNotEqual(c1, c3)
def test_binding_vs_ref2():
    assert parse('N') == BindVariable('N', int)
def test_value_frozen_at_parsetime():
    p = 2
    c = parse('$p')
    p = 3
    assert c.rvalue.value == 2
 def test_binding_vs_ref(self):
     self.assertEqual(parse('list[N]'), List(BindVariable('N', int), None))
Beispiel #40
0
def test_parse_1():
    contract = parse('>0')
    assert isinstance(contract, Contract)
    contract.check(2)
    with raises(ContractNotRespected):
        contract.check('ciao')
 def test_variables(self):
     for s in ['a', 'b', 'c', 'd', 'x', 'y']:
         self.assertEqual(parse(s), BindVariable(s, object))
         U = s.upper()
         self.assertEqual(parse(U), BindVariable(U, int))
Beispiel #42
0
def test_repr_1():
    contract = parse(' list[N](int), N > 0')

    ("%s" % contract)  # => 'list[N](int),N>0'
    ("%r" % contract)  # => And([List(BindVariable('N',int),...
Beispiel #43
0
def test_parse_2():
    with raises(ContractSyntaxError):
        parse('>>')
 def test_binding_vs_ref(self):
     self.assertEqual(parse('list[N]'), List(BindVariable('N', int), None))
Beispiel #45
0
def test_equality_contract():
    c1 = parse('list[C](str),C>0')
    c2 = parse('list[C](str),C>0')
    c3 = parse('list[R](str),R>0')
    assert c1 == c2
    assert c1 != c3
Beispiel #46
0
 def __init__(self, name, default=None, contract=None):
     self.name = name
     self.value = default
     self.contract = parse(contract) if contract else None