示例#1
0
def test_arg_invalid():
    with pytest.raises(pt.TealTypeError):
        pt.Arg(pt.Bytes("k"))

    with pytest.raises(pt.TealInputError):
        pt.Arg(-1)

    with pytest.raises(pt.TealInputError):
        pt.Arg(256)
示例#2
0
def test_arg_static():
    for i in range(256):
        expr = pt.Arg(i)
        assert expr.type_of() == pt.TealType.bytes
        assert not expr.has_return()

        expected = pt.TealSimpleBlock([pt.TealOp(expr, pt.Op.arg, i)])

        actual, _ = expr.__teal__(avm2Options)
        assert actual == expected
示例#3
0
def test_keccak256():
    arg = pt.Arg(0)
    expr = pt.Keccak256(arg)
    assert expr.type_of() == pt.TealType.bytes

    expected = pt.TealSimpleBlock(
        [pt.TealOp(arg, pt.Op.arg, 0), pt.TealOp(expr, pt.Op.keccak256)]
    )

    actual, _ = expr.__teal__(avm2Options)
    actual.addIncoming()
    actual = pt.TealBlock.NormalizeBlocks(actual)

    assert actual == expected
示例#4
0
def test_btoi():
    arg = pt.Arg(1)
    expr = pt.Btoi(arg)
    assert expr.type_of() == pt.TealType.uint64

    expected = pt.TealSimpleBlock(
        [pt.TealOp(arg, pt.Op.arg, 1), pt.TealOp(expr, pt.Op.btoi)]
    )

    actual, _ = expr.__teal__(avm2Options)
    actual.addIncoming()
    actual = pt.TealBlock.NormalizeBlocks(actual)

    assert actual == expected
示例#5
0
def test_arg_dynamic():
    i = pt.Int(7)
    expr = pt.Arg(i)
    assert expr.type_of() == pt.TealType.bytes
    assert not expr.has_return()

    expected = pt.TealSimpleBlock(
        [pt.TealOp(i, pt.Op.int, 7), pt.TealOp(expr, pt.Op.args)]
    )

    actual, _ = expr.__teal__(avm5Options)
    actual.addIncoming()
    actual = pt.TealBlock.NormalizeBlocks(actual)

    assert actual == expected

    with pytest.raises(pt.TealInputError):
        expr.__teal__(avm4Options)
示例#6
0
def test_cond_invalid():
    with pytest.raises(pt.TealInputError):
        pt.Cond()

    with pytest.raises(pt.TealInputError):
        pt.Cond([])

    with pytest.raises(pt.TealInputError):
        pt.Cond([pt.Int(1)], [pt.Int(2), pt.Pop(pt.Txn.receiver())])

    with pytest.raises(pt.TealTypeError):
        pt.Cond([pt.Int(1), pt.Int(2)], [pt.Int(2), pt.Txn.receiver()])

    with pytest.raises(pt.TealTypeError):
        pt.Cond([pt.Arg(0), pt.Int(2)])

    with pytest.raises(pt.TealTypeError):
        pt.Cond([pt.Int(1), pt.Int(2)], [pt.Int(2), pt.Pop(pt.Int(2))])

    with pytest.raises(pt.TealTypeError):
        pt.Cond([pt.Int(1), pt.Pop(pt.Int(1))], [pt.Int(2), pt.Int(2)])
示例#7
0
def test_itob_invalid():
    with pytest.raises(pt.TealTypeError):
        pt.Itob(pt.Arg(1))