From 73dc9b1dca3f8c920a0abe05da429401d4a8f2e2 Mon Sep 17 00:00:00 2001 From: simon987 Date: Thu, 30 Jul 2020 19:13:07 -0400 Subject: [PATCH] More operand/dw tests (#228) --- .../simon987/mar/server/assembly/DWTest.java | 24 ----------- .../mar/server/assembly/DwDirectiveTest.java | 43 ++++++++++++++++++- .../mar/server/assembly/OperandTest.java | 16 +++++++ 3 files changed, 57 insertions(+), 26 deletions(-) delete mode 100644 src/test/java/net/simon987/mar/server/assembly/DWTest.java diff --git a/src/test/java/net/simon987/mar/server/assembly/DWTest.java b/src/test/java/net/simon987/mar/server/assembly/DWTest.java deleted file mode 100644 index ed07f89..0000000 --- a/src/test/java/net/simon987/mar/server/assembly/DWTest.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.simon987.mar.server.assembly; - -import net.simon987.mar.server.FakeConfiguration; -import net.simon987.mar.server.IServerConfiguration; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class DWTest { - - @Test - public void TestSemiColonInString() { - - IServerConfiguration configuration = new FakeConfiguration(); - - configuration.setInt("memory_size", 1000); - configuration.setInt("org_offset", 400); - - Assembler assembler = new Assembler(new DefaultInstructionSet(), new DefaultRegisterSet(), configuration); - - AssemblyResult ar = assembler.parse("DW \";\""); - assertEquals(0, ar.exceptions.size()); - } -} diff --git a/src/test/java/net/simon987/mar/server/assembly/DwDirectiveTest.java b/src/test/java/net/simon987/mar/server/assembly/DwDirectiveTest.java index 8198d46..876e932 100644 --- a/src/test/java/net/simon987/mar/server/assembly/DwDirectiveTest.java +++ b/src/test/java/net/simon987/mar/server/assembly/DwDirectiveTest.java @@ -1,10 +1,11 @@ package net.simon987.mar.server.assembly; +import net.simon987.mar.server.FakeConfiguration; +import net.simon987.mar.server.IServerConfiguration; import net.simon987.mar.server.TestExecutionResult; import org.junit.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; public class DwDirectiveTest { @Test @@ -20,4 +21,42 @@ public class DwDirectiveTest { assertTrue(res.ar.exceptions.isEmpty()); assertEquals('H', res.regValue("A")); } + + @Test + public void semiColonInString() { + String code = "DW \";\""; + + TestExecutionResult res = TestHelper.executeCode(code); + + assertTrue(res.ar.exceptions.isEmpty()); + } + + @Test + public void nullEscape() { + String code = "DW \"\\0\\0\""; + + TestExecutionResult res = TestHelper.executeCode(code); + + assertTrue(res.ar.exceptions.isEmpty()); + } + + @Test + public void unicode1() { + String code = "DW \"\\u0123\""; + + TestExecutionResult res = TestHelper.executeCode(code); + + assertTrue(res.ar.exceptions.isEmpty()); + assertEquals(0x0123 ,res.memValue(res.ar.origin)); + } + + @Test + public void escapeQuote() { + String code = "DW \"\\\"\""; + + TestExecutionResult res = TestHelper.executeCode(code); + + assertTrue(res.ar.exceptions.isEmpty()); + assertEquals('"' ,res.memValue(res.ar.origin)); + } } diff --git a/src/test/java/net/simon987/mar/server/assembly/OperandTest.java b/src/test/java/net/simon987/mar/server/assembly/OperandTest.java index 838f1e3..774420f 100644 --- a/src/test/java/net/simon987/mar/server/assembly/OperandTest.java +++ b/src/test/java/net/simon987/mar/server/assembly/OperandTest.java @@ -150,4 +150,20 @@ public class OperandTest { try{ new Operand("[A+A+]", labels, registerSet, 0); } catch (InvalidOperandException ignored){} try{ new Operand("[A+[1]]", labels, registerSet, 0); } catch (InvalidOperandException ignored){} } + + @Test + public void octalLiteral() throws Exception { + Operand op = new Operand("0600", new HashMap<>(), new DefaultRegisterSet(), 0); + assertEquals(OperandType.IMMEDIATE16, op.getType()); + assertEquals(Operand.IMMEDIATE_VALUE, op.getValue()); + assertEquals(384, op.getData()); + } + + @Test + public void binaryLiteral() throws Exception { + Operand op = new Operand("0b1000", new HashMap<>(), new DefaultRegisterSet(), 0); + assertEquals(OperandType.IMMEDIATE16, op.getType()); + assertEquals(Operand.IMMEDIATE_VALUE, op.getValue()); + assertEquals(0b1000, op.getData()); + } }