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)
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))
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)
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)
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)
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)