def test_incr_withlabel_address():
    code = "incr *mylabel"
    with StringIO(code) as f:
        ast = parser.parse_it(f)

    assert type(ast[0]) == parser.IncrOp
    assert ast[0].label_name == parser.AddressOf("mylabel")
def test_decr_withnumber_address():
    code = "decr *4"
    with StringIO(code) as f:
        ast = parser.parse_it(f)

    assert type(ast[0]) == parser.DecrOp
    assert ast[0].label_name == parser.AddressOf("4")
def test_assign_from_addressof_tile():
    code = "emp = *3"
    with StringIO(code) as f:
        ast = parser.parse_it(f)

    assert ast[0].src == parser.AddressOf("3")
    assert ast[0].dst == "emp"
def test_compat_copyto_addressof_aliased():
    code = "copyto *aliased"
    with StringIO(code) as f:
        ast = parser.parse_it(f)

    assert type(ast[0]) == parser.AssignOp
    assert ast[0].src == "emp"
    assert ast[0].dst == parser.AddressOf("aliased")
def test_compat_copyto_addressof_tilenumber():
    code = "copyto [0]"
    with StringIO(code) as f:
        ast = parser.parse_it(f)

    assert type(ast[0]) == parser.AssignOp
    assert ast[0].src == "emp"
    assert ast[0].dst == parser.AddressOf("0")
def test_compat_sub_address_of_number():
    code = "sub *5"
    with StringIO(code) as f:
        ast = parser.parse_it(f)

    assert ast[0].subtraend == parser.AddressOf("5")
def test_compat_sub_address_of_tile():
    code = "sub *tile"
    with StringIO(code) as f:
        ast = parser.parse_it(f)

    assert ast[0].subtraend == parser.AddressOf("tile")
def test_compat_add_address_of_number():
    code = "add *3"
    with StringIO(code) as f:
        ast = parser.parse_it(f)

    assert ast[0].addend == parser.AddressOf("3")
def test_compat_add_oldaddress_of_tile():
    code = "add [test]"
    with StringIO(code) as f:
        ast = parser.parse_it(f)

    assert ast[0].addend == parser.AddressOf("test")
def test_add_oldaddress_of_number():
    code = "emp += [3]"
    with StringIO(code) as f:
        ast = parser.parse_it(f)

    assert ast[0].addend == parser.AddressOf("3")
def test_add_address_of_tile():
    code = "emp += *test"
    with StringIO(code) as f:
        ast = parser.parse_it(f)

    assert ast[0].addend == parser.AddressOf("test")