🐐 index assignment
This commit is contained in:
54
tests.py
54
tests.py
@@ -6,7 +6,7 @@ from parameterized import parameterized
|
||||
|
||||
from centvrion.ast_nodes import (
|
||||
ArrayIndex, Bool, BinOp, BuiltIn, DataArray, DataRangeArray, Defini,
|
||||
Designa, DumStatement, Erumpe, ExpressionStatement, ID,
|
||||
Designa, DesignaIndex, DumStatement, Erumpe, ExpressionStatement, ID,
|
||||
Invoca, ModuleCall, Nullus, Numeral, PerStatement,
|
||||
Program, Redi, SiStatement, String, UnaryMinus, UnaryNot,
|
||||
num_to_int, int_to_num, make_string,
|
||||
@@ -924,6 +924,58 @@ class TestArrayIndex(unittest.TestCase):
|
||||
run_test(self, source, nodes, value)
|
||||
|
||||
|
||||
# --- Array index assignment ---
|
||||
|
||||
array_index_assign_tests = [
|
||||
# assign to middle element
|
||||
("DESIGNA a VT [I, II, III]\nDESIGNA a[II] VT X\na[II]",
|
||||
Program([], [
|
||||
Designa(ID("a"), DataArray([Numeral("I"), Numeral("II"), Numeral("III")])),
|
||||
DesignaIndex(ID("a"), Numeral("II"), Numeral("X")),
|
||||
ExpressionStatement(ArrayIndex(ID("a"), Numeral("II"))),
|
||||
]),
|
||||
ValInt(10)),
|
||||
# assign to first element
|
||||
("DESIGNA a VT [I, II, III]\nDESIGNA a[I] VT V\na[I]",
|
||||
Program([], [
|
||||
Designa(ID("a"), DataArray([Numeral("I"), Numeral("II"), Numeral("III")])),
|
||||
DesignaIndex(ID("a"), Numeral("I"), Numeral("V")),
|
||||
ExpressionStatement(ArrayIndex(ID("a"), Numeral("I"))),
|
||||
]),
|
||||
ValInt(5)),
|
||||
# assign to last element
|
||||
("DESIGNA a VT [I, II, III]\nDESIGNA a[III] VT L\na[III]",
|
||||
Program([], [
|
||||
Designa(ID("a"), DataArray([Numeral("I"), Numeral("II"), Numeral("III")])),
|
||||
DesignaIndex(ID("a"), Numeral("III"), Numeral("L")),
|
||||
ExpressionStatement(ArrayIndex(ID("a"), Numeral("III"))),
|
||||
]),
|
||||
ValInt(50)),
|
||||
# other elements unaffected
|
||||
("DESIGNA a VT [I, II, III]\nDESIGNA a[II] VT X\na[I]",
|
||||
Program([], [
|
||||
Designa(ID("a"), DataArray([Numeral("I"), Numeral("II"), Numeral("III")])),
|
||||
DesignaIndex(ID("a"), Numeral("II"), Numeral("X")),
|
||||
ExpressionStatement(ArrayIndex(ID("a"), Numeral("I"))),
|
||||
]),
|
||||
ValInt(1)),
|
||||
# expression as index
|
||||
("DESIGNA a VT [I, II, III]\nDESIGNA i VT II\nDESIGNA a[i] VT X\na[II]",
|
||||
Program([], [
|
||||
Designa(ID("a"), DataArray([Numeral("I"), Numeral("II"), Numeral("III")])),
|
||||
Designa(ID("i"), Numeral("II")),
|
||||
DesignaIndex(ID("a"), ID("i"), Numeral("X")),
|
||||
ExpressionStatement(ArrayIndex(ID("a"), Numeral("II"))),
|
||||
]),
|
||||
ValInt(10)),
|
||||
]
|
||||
|
||||
class TestArrayIndexAssign(unittest.TestCase):
|
||||
@parameterized.expand(array_index_assign_tests)
|
||||
def test_array_index_assign(self, source, nodes, value):
|
||||
run_test(self, source, nodes, value)
|
||||
|
||||
|
||||
# --- Comments ---
|
||||
|
||||
comment_tests = [
|
||||
|
||||
Reference in New Issue
Block a user