clarified isInRegularRAM() by making it an extension method on AssignTarget

This commit is contained in:
Irmen de Jong
2021-10-19 22:36:05 +02:00
parent 5afa7e53f8
commit 804bb06859
6 changed files with 76 additions and 73 deletions

View File

@@ -12,6 +12,7 @@ import prog8.ast.expressions.IdentifierReference
import prog8.ast.expressions.NumericLiteralValue
import prog8.ast.expressions.PrefixExpression
import prog8.ast.statements.*
import prog8.compiler.astprocessing.isInRegularRAMof
import prog8.compiler.target.C64Target
import prog8.parser.SourceCode
import prog8tests.helpers.DummyFunctions
@@ -28,23 +29,23 @@ class TestMemory {
var memexpr = NumericLiteralValue.optimalInteger(0x0000, Position.DUMMY)
var target = AssignTarget(null, null, DirectMemoryWrite(memexpr, Position.DUMMY), Position.DUMMY)
assertTrue(C64Target.isInRegularRAM(target))
assertTrue(target.isInRegularRAMof(C64Target.machine))
memexpr = NumericLiteralValue.optimalInteger(0x1000, Position.DUMMY)
target = AssignTarget(null, null, DirectMemoryWrite(memexpr, Position.DUMMY), Position.DUMMY)
assertTrue(C64Target.isInRegularRAM(target))
assertTrue(target.isInRegularRAMof(C64Target.machine))
memexpr = NumericLiteralValue.optimalInteger(0x9fff, Position.DUMMY)
target = AssignTarget(null, null, DirectMemoryWrite(memexpr, Position.DUMMY), Position.DUMMY)
assertTrue(C64Target.isInRegularRAM(target))
assertTrue(target.isInRegularRAMof(C64Target.machine))
memexpr = NumericLiteralValue.optimalInteger(0xc000, Position.DUMMY)
target = AssignTarget(null, null, DirectMemoryWrite(memexpr, Position.DUMMY), Position.DUMMY)
assertTrue(C64Target.isInRegularRAM(target))
assertTrue(target.isInRegularRAMof(C64Target.machine))
memexpr = NumericLiteralValue.optimalInteger(0xcfff, Position.DUMMY)
target = AssignTarget(null, null, DirectMemoryWrite(memexpr, Position.DUMMY), Position.DUMMY)
assertTrue(C64Target.isInRegularRAM(target))
assertTrue(target.isInRegularRAMof(C64Target.machine))
}
@Test
@@ -52,19 +53,19 @@ class TestMemory {
var memexpr = NumericLiteralValue.optimalInteger(0xa000, Position.DUMMY)
var target = AssignTarget(null, null, DirectMemoryWrite(memexpr, Position.DUMMY), Position.DUMMY)
assertFalse(C64Target.isInRegularRAM(target))
assertFalse(target.isInRegularRAMof(C64Target.machine))
memexpr = NumericLiteralValue.optimalInteger(0xafff, Position.DUMMY)
target = AssignTarget(null, null, DirectMemoryWrite(memexpr, Position.DUMMY), Position.DUMMY)
assertFalse(C64Target.isInRegularRAM(target))
assertFalse(target.isInRegularRAMof(C64Target.machine))
memexpr = NumericLiteralValue.optimalInteger(0xd000, Position.DUMMY)
target = AssignTarget(null, null, DirectMemoryWrite(memexpr, Position.DUMMY), Position.DUMMY)
assertFalse(C64Target.isInRegularRAM(target))
assertFalse(target.isInRegularRAMof(C64Target.machine))
memexpr = NumericLiteralValue.optimalInteger(0xffff, Position.DUMMY)
target = AssignTarget(null, null, DirectMemoryWrite(memexpr, Position.DUMMY), Position.DUMMY)
assertFalse(C64Target.isInRegularRAM(target))
assertFalse(target.isInRegularRAMof(C64Target.machine))
}
@Test
@@ -72,15 +73,15 @@ class TestMemory {
val program = Program("test", DummyFunctions, DummyMemsizer)
var target = createTestProgramForMemoryRefViaVar(program, 0x1000, VarDeclType.VAR)
assertTrue(C64Target.isInRegularRAM(target))
assertTrue(target.isInRegularRAMof(C64Target.machine))
target = createTestProgramForMemoryRefViaVar(program, 0xd020, VarDeclType.VAR)
assertFalse(C64Target.isInRegularRAM(target))
assertFalse(target.isInRegularRAMof(C64Target.machine))
target = createTestProgramForMemoryRefViaVar(program, 0x1000, VarDeclType.CONST)
assertTrue(C64Target.isInRegularRAM(target))
assertTrue(target.isInRegularRAMof(C64Target.machine))
target = createTestProgramForMemoryRefViaVar(program, 0xd020, VarDeclType.CONST)
assertFalse(C64Target.isInRegularRAM(target))
assertFalse(target.isInRegularRAMof(C64Target.machine))
target = createTestProgramForMemoryRefViaVar(program, 0x1000, VarDeclType.MEMORY)
assertFalse(C64Target.isInRegularRAM(target))
assertFalse(target.isInRegularRAMof(C64Target.machine))
}
private fun createTestProgramForMemoryRefViaVar(program: Program, address: Int, vartype: VarDeclType): AssignTarget {
@@ -98,7 +99,7 @@ class TestMemory {
fun testInValidRamC64_memory_expression() {
val memexpr = PrefixExpression("+", NumericLiteralValue.optimalInteger(0x1000, Position.DUMMY), Position.DUMMY)
val target = AssignTarget(null, null, DirectMemoryWrite(memexpr, Position.DUMMY), Position.DUMMY)
assertFalse(C64Target.isInRegularRAM(target))
assertFalse(target.isInRegularRAMof(C64Target.machine))
}
@Test
@@ -111,7 +112,7 @@ class TestMemory {
val program = Program("test", DummyFunctions, DummyMemsizer)
.addModule(module)
module.linkIntoProgram(program)
assertTrue(C64Target.isInRegularRAM(target))
assertTrue(target.isInRegularRAMof(C64Target.machine))
}
@Test
@@ -125,7 +126,7 @@ class TestMemory {
val program = Program("test", DummyFunctions, DummyMemsizer)
.addModule(module)
module.linkIntoProgram(program)
assertTrue(C64Target.isInRegularRAM(target))
assertTrue(target.isInRegularRAMof(C64Target.machine))
}
@Test
@@ -139,7 +140,7 @@ class TestMemory {
val program = Program("test", DummyFunctions, DummyMemsizer)
.addModule(module)
module.linkIntoProgram(program)
assertFalse(C64Target.isInRegularRAM(target))
assertFalse(target.isInRegularRAMof(C64Target.machine))
}
@Test
@@ -153,7 +154,7 @@ class TestMemory {
val program = Program("test", DummyFunctions, DummyMemsizer)
.addModule(module)
module.linkIntoProgram(program)
assertTrue(C64Target.isInRegularRAM(target))
assertTrue(target.isInRegularRAMof(C64Target.machine))
}
@Test
@@ -168,7 +169,7 @@ class TestMemory {
val program = Program("test", DummyFunctions, DummyMemsizer)
.addModule(module)
module.linkIntoProgram(program)
assertTrue(C64Target.isInRegularRAM(target))
assertTrue(target.isInRegularRAMof(C64Target.machine))
}
@Test
@@ -183,6 +184,6 @@ class TestMemory {
val program = Program("test", DummyFunctions, DummyMemsizer)
.addModule(module)
module.linkIntoProgram(program)
assertFalse(C64Target.isInRegularRAM(target))
assertFalse(target.isInRegularRAMof(C64Target.machine))
}
}