from Aspidites._vendor.contracts import new_contract
from Aspidites._vendor.contracts.test_registrar import fail, good, syntax_fail



@new_contract
def ext0_positive(value):
    return value > 0

@new_contract
def ext1_lessthan(value, threshold):
    return value < threshold


good('ext0_positive', 1)
fail('ext0_positive', -1)


good('ext1_lessthan(0)', -1)  
fail('ext1_lessthan(0)', +1)
# named
good('ext1_lessthan(threshold=0)', -1)  
fail('ext1_lessthan(threshold=0)', +1)


# needs to fail parsing because we didn't provide argument
syntax_fail('ext1_lessthan')
# needs to fail parsing because the argument name is wrong
syntax_fail('ext1_lessthan(th=0)')
# too many arguments
syntax_fail('ext1_lessthan(0,1)')

