Exemple #1
0
def test_invalid_contract_reference_call(assert_tx_failed):
    contract = """
def bar(arg1: address, arg2: num) -> num:
    return Foo(arg1).foo(arg2)
"""
    t.s = t.Chain()
    assert_tx_failed(t, lambda: get_contract(contract), exception = VariableDeclarationException)
Exemple #2
0
def test_invalid_external_contract_call_to_the_same_contract(assert_tx_failed):
    contract_1 = """
def bar() -> num:
    return 1
    """

    contract_2 = """
class Bar():
    def bar() -> num: pass

def bar() -> num:
    return 1

def _stmt(x: address):
    Bar(x).bar()

def _expr(x: address) -> num:
    return Bar(x).bar()
    """

    t.s = t.Chain()
    c1 = get_contract(contract_1)
    c2 = get_contract(contract_2)

    c2._stmt(c1.address)
    c2._expr(c1.address)
    assert_tx_failed(t, lambda: c2._stmt(c2.address))
    assert_tx_failed(t, lambda: c2._expr(c2.address))
Exemple #3
0
def test_external_contracts_must_be_declared_first_2(assert_tx_failed):
    contract = """

MyLog: __log__({})

class Foo():
    def foo(arg2: num) -> num: pass
"""
    t.s = t.Chain()
    assert_tx_failed(t, lambda: get_contract(contract), exception = StructureException)
Exemple #4
0
def test_invalid_contract_reference_return_type(assert_tx_failed):
    contract = """
class Foo():
    def foo(arg2: num) -> invalid: pass

def bar(arg1: address, arg2: num) -> num:
    return Foo(arg1).foo(arg2)
"""
    t.s = t.Chain()
    assert_tx_failed(t, lambda: get_contract(contract), exception = InvalidTypeException)
Exemple #5
0
def test_external_contracts_must_be_declared_first_1(assert_tx_failed):
    contract = """

item: public(num)

class Foo():
    def foo(arg2: num) -> num: pass
"""
    t.s = t.Chain()
    assert_tx_failed(lambda: get_contract(contract),
                     exception=StructureException)
Exemple #6
0
def test_invalid_contract_reference_declaration(assert_tx_failed):
    contract = """
class Bar():
    get_magic_number: 1

best_number: public(num)

def __init__():
    pass
"""
    t.s = t.Chain()
    assert_tx_failed(t, lambda: get_contract(contract), exception = StructureException)