From fb8fdac9c3bb180966cca2107200ea2a2f5fbb96 Mon Sep 17 00:00:00 2001 From: Kevin Ramharak Date: Wed, 23 Jan 2019 14:25:58 +0100 Subject: [PATCH] add tests for all SETcc instructions --- .../instruction/SetaInstructionTest.java | 54 ++++++++++++++++ .../instruction/SetaeInstructionTest.java | 42 ++++++++++++ .../instruction/SetbInstructionTest.java | 42 ++++++++++++ .../instruction/SetbeInstructionTest.java | 54 ++++++++++++++++ .../instruction/SetcInstructionTest.java | 42 ++++++++++++ .../instruction/SeteInstructionTest.java | 42 ++++++++++++ .../instruction/SetgInstructionTest.java | 64 +++++++++++++++++++ .../instruction/SetgeInstructionTest.java | 54 ++++++++++++++++ .../instruction/SetlInstructionTest.java | 54 ++++++++++++++++ .../instruction/SetleInstructionTest.java | 62 ++++++++++++++++++ .../instruction/SetnaInstructionTest.java | 54 ++++++++++++++++ .../instruction/SetnaeInstructionTest.java | 42 ++++++++++++ .../instruction/SetnbInstructionTest.java | 42 ++++++++++++ .../instruction/SetnbeInstructionTest.java | 54 ++++++++++++++++ .../instruction/SetncInstructionTest.java | 42 ++++++++++++ .../instruction/SetneInstructionTest.java | 42 ++++++++++++ .../instruction/SetngInstructionTest.java | 63 ++++++++++++++++++ .../instruction/SetngeInstructionTest.java | 54 ++++++++++++++++ .../instruction/SetnlInstructionTest.java | 54 ++++++++++++++++ .../instruction/SetnleInstructionTest.java | 64 +++++++++++++++++++ .../instruction/SetnoInstructionTest.java | 42 ++++++++++++ .../instruction/SetnsInstructionTest.java | 42 ++++++++++++ .../instruction/SetnzInstructionTest.java | 0 .../instruction/SetoInstructionTest.java | 42 ++++++++++++ .../instruction/SetsInstructionTest.java | 42 ++++++++++++ .../instruction/SetzInstructionTest.java | 42 ++++++++++++ 26 files changed, 1231 insertions(+) create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetaInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetaeInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetbInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetbeInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetcInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SeteInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetgInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetgeInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetlInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetleInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetnaInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetnaeInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetnbInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetnbeInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetncInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetneInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetngInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetngeInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetnlInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetnleInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetnoInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetnsInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetnzInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetoInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetsInstructionTest.java create mode 100644 Server/src/test/java/net/simon987/server/assembly/instruction/SetzInstructionTest.java diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetaInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetaInstructionTest.java new file mode 100644 index 0000000..a4825e0 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetaInstructionTest.java @@ -0,0 +1,54 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetaInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETA; + + public SetaInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetaInstruction(); + } + + /** + * SETA, SETNBE Above, Not Below or Equal CF=0 AND ZF=0 + */ + @Test + public void execution() { + status.setCarryFlag(false); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setCarryFlag(true); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setCarryFlag(false); + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setCarryFlag(true); + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetaeInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetaeInstructionTest.java new file mode 100644 index 0000000..10d70c3 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetaeInstructionTest.java @@ -0,0 +1,42 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetaeInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETAE; + + public SetaeInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetaeInstruction(); + } + + /** + * SETAE,SETNB,SETNC Above or Equal, Not Below, No Carry CF=0 + */ + @Test + public void execution() { + status.setCarryFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setCarryFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetbInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetbInstructionTest.java new file mode 100644 index 0000000..c0f464b --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetbInstructionTest.java @@ -0,0 +1,42 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetbInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETB; + + public SetbInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetbInstruction(); + } + + /** + * SETB, SETC,SETNAE Below, Carry, Not Above or Equal CF=1 + */ + @Test + public void execution() { + status.setCarryFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setCarryFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetbeInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetbeInstructionTest.java new file mode 100644 index 0000000..c23d5d8 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetbeInstructionTest.java @@ -0,0 +1,54 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetbeInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETBE; + + public SetbeInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetbeInstruction(); + } + + /** + * SETBE, SETNA Below or Equal, Not Above CF=1 OR ZF=1 + */ + @Test + public void execution() { + status.setCarryFlag(false); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setCarryFlag(true); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setCarryFlag(false); + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setCarryFlag(true); + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetcInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetcInstructionTest.java new file mode 100644 index 0000000..2777442 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetcInstructionTest.java @@ -0,0 +1,42 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetcInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETB; + + public SetcInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetcInstruction(); + } + + /** + * SETB, SETC,SETNAE Below, Carry, Not Above or Equal CF=1 + */ + @Test + public void execution() { + status.setCarryFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setCarryFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SeteInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SeteInstructionTest.java new file mode 100644 index 0000000..cd5ec55 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SeteInstructionTest.java @@ -0,0 +1,42 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SeteInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETE; + + public SeteInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SeteInstruction(); + } + + /** + * SETE, SETZ Equal, Zero ZF=1 + */ + @Test + public void execution() { + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetgInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetgInstructionTest.java new file mode 100644 index 0000000..2bd7e58 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetgInstructionTest.java @@ -0,0 +1,64 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetgInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETG; + + public SetgInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetgInstruction(); + } + + /** + * SETG, SETNLE Greater, Not Less or Equal SF=OF AND ZF=0 + */ + @Test + public void execution() { + status.setSignFlag(false); + status.setOverflowFlag(false); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(true); + status.setOverflowFlag(true); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(false); + status.setOverflowFlag(false); + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setSignFlag(true); + status.setOverflowFlag(false); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setSignFlag(false); + status.setOverflowFlag(true); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetgeInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetgeInstructionTest.java new file mode 100644 index 0000000..f667877 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetgeInstructionTest.java @@ -0,0 +1,54 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetgeInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETGE; + + public SetgeInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetgeInstruction(); + } + + /** + * SETGE, SETNL Greater or Equal, Not Less SF=OF + */ + @Test + public void execution() { + status.setSignFlag(true); + status.setOverflowFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(true); + status.setOverflowFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setSignFlag(false); + status.setOverflowFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setSignFlag(false); + status.setOverflowFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetlInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetlInstructionTest.java new file mode 100644 index 0000000..5f47b68 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetlInstructionTest.java @@ -0,0 +1,54 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetlInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETL; + + public SetlInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetlInstruction(); + } + + /** + * SETL, SETNGE Less, Not Greater or Equal SF<>OF + */ + @Test + public void execution() { + status.setSignFlag(true); + status.setOverflowFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(false); + status.setOverflowFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(false); + status.setOverflowFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setSignFlag(true); + status.setOverflowFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetleInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetleInstructionTest.java new file mode 100644 index 0000000..2e37ea9 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetleInstructionTest.java @@ -0,0 +1,62 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetleInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETLE; + + public SetleInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetleInstruction(); + } + + /** + * SETL, SETNGE Less, Not Greater or Equal SF<>OF + */ + @Test + public void execution() { + status.setSignFlag(true); + status.setOverflowFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(false); + status.setOverflowFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(false); + status.setOverflowFlag(false); + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(false); + status.setOverflowFlag(false); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setSignFlag(true); + status.setOverflowFlag(true); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetnaInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnaInstructionTest.java new file mode 100644 index 0000000..49e9400 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnaInstructionTest.java @@ -0,0 +1,54 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetnaInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETBE; + + public SetnaInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetnaInstruction(); + } + + /** + * SETBE, SETNA Below or Equal, Not Above CF=1 OR ZF=1 + */ + @Test + public void execution() { + status.setCarryFlag(false); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setCarryFlag(true); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setCarryFlag(false); + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setCarryFlag(true); + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetnaeInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnaeInstructionTest.java new file mode 100644 index 0000000..c9ee249 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnaeInstructionTest.java @@ -0,0 +1,42 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetnaeInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETB; + + public SetnaeInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetnaeInstruction(); + } + + /** + * SETB, SETC,SETNAE Below, Carry, Not Above or Equal CF=1 + */ + @Test + public void execution() { + status.setCarryFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setCarryFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetnbInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnbInstructionTest.java new file mode 100644 index 0000000..2be4102 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnbInstructionTest.java @@ -0,0 +1,42 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetnbInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETAE; + + public SetnbInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetnbInstruction(); + } + + /** + * SETAE,SETNB,SETNC Above or Equal, Not Below, No Carry CF=0 + */ + @Test + public void execution() { + status.setCarryFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setCarryFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetnbeInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnbeInstructionTest.java new file mode 100644 index 0000000..a501ee4 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnbeInstructionTest.java @@ -0,0 +1,54 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetnbeInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETA; + + public SetnbeInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetnbeInstruction(); + } + + /** + * SETA, SETNBE Above, Not Below or Equal CF=0 AND ZF=0 + */ + @Test + public void execution() { + status.setCarryFlag(false); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setCarryFlag(true); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setCarryFlag(false); + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setCarryFlag(true); + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetncInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetncInstructionTest.java new file mode 100644 index 0000000..84d0998 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetncInstructionTest.java @@ -0,0 +1,42 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetncInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETAE; + + public SetncInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetncInstruction(); + } + + /** + * SETAE,SETNB,SETNC Above or Equal, Not Below, No Carry CF=0 + */ + @Test + public void execution() { + status.setCarryFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setCarryFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetneInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetneInstructionTest.java new file mode 100644 index 0000000..4a21ab0 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetneInstructionTest.java @@ -0,0 +1,42 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetneInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETNE; + + public SetneInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetneInstruction(); + } + + /** + * SETNE, SETNZ Not Equal, Not Zero ZF=0 + */ + @Test + public void execution() { + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetngInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetngInstructionTest.java new file mode 100644 index 0000000..8738be1 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetngInstructionTest.java @@ -0,0 +1,63 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetngInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETLE; + + public SetngInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetngInstruction(); + } + + /** + * SETLE, SETNG Less or Equal, Not Greater SF<>OF OR ZF=1 + */ + @Test + public void execution() { + status.setSignFlag(true); + status.setOverflowFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(false); + status.setOverflowFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(false); + status.setOverflowFlag(false); + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(false); + status.setOverflowFlag(false); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + + status.setSignFlag(true); + status.setOverflowFlag(true); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetngeInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetngeInstructionTest.java new file mode 100644 index 0000000..9a9853e --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetngeInstructionTest.java @@ -0,0 +1,54 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetngeInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETL; + + public SetngeInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetngeInstruction(); + } + + /** + * SETL, SETNGE Less, Not Greater or Equal SF<>OF + */ + @Test + public void execution() { + status.setSignFlag(true); + status.setOverflowFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(false); + status.setOverflowFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(false); + status.setOverflowFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setSignFlag(true); + status.setOverflowFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetnlInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnlInstructionTest.java new file mode 100644 index 0000000..9431a0f --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnlInstructionTest.java @@ -0,0 +1,54 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetnlInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETGE; + + public SetnlInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetnlInstruction(); + } + + /** + * SETGE, SETNL Greater or Equal, Not Less SF=OF + */ + @Test + public void execution() { + status.setSignFlag(true); + status.setOverflowFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(true); + status.setOverflowFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setSignFlag(false); + status.setOverflowFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setSignFlag(false); + status.setOverflowFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetnleInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnleInstructionTest.java new file mode 100644 index 0000000..fd0c8ba --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnleInstructionTest.java @@ -0,0 +1,64 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetnleInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETG; + + public SetnleInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetnleInstruction(); + } + + /** + * SETG, SETNLE Greater, Not Less or Equal SF=OF AND ZF=0 + */ + @Test + public void execution() { + status.setSignFlag(false); + status.setOverflowFlag(false); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(true); + status.setOverflowFlag(true); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(false); + status.setOverflowFlag(false); + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setSignFlag(true); + status.setOverflowFlag(false); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + + status.setSignFlag(false); + status.setOverflowFlag(true); + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetnoInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnoInstructionTest.java new file mode 100644 index 0000000..beae781 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnoInstructionTest.java @@ -0,0 +1,42 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetnoInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETNO; + + public SetnoInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetnoInstruction(); + } + + /** + * SETNO No Overflow OF=0 + */ + @Test + public void execution() { + status.setOverflowFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setOverflowFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetnsInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnsInstructionTest.java new file mode 100644 index 0000000..6b256b5 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnsInstructionTest.java @@ -0,0 +1,42 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetnsInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETNS; + + public SetnsInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetnsInstruction(); + } + + /** + * SETS No Sign SF=0 + */ + @Test + public void execution() { + status.setSignFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetnzInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetnzInstructionTest.java new file mode 100644 index 0000000..e69de29 diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetoInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetoInstructionTest.java new file mode 100644 index 0000000..eee4911 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetoInstructionTest.java @@ -0,0 +1,42 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetoInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETO; + + public SetoInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetoInstruction(); + } + + /** + * SETO Overflow OF=1 + */ + @Test + public void execution() { + status.setOverflowFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setOverflowFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetsInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetsInstructionTest.java new file mode 100644 index 0000000..ca9be24 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetsInstructionTest.java @@ -0,0 +1,42 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetsInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETS; + + public SetsInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetsInstruction(); + } + + /** + * SETS Sign SF=1 + */ + @Test + public void execution() { + status.setSignFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setSignFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +} diff --git a/Server/src/test/java/net/simon987/server/assembly/instruction/SetzInstructionTest.java b/Server/src/test/java/net/simon987/server/assembly/instruction/SetzInstructionTest.java new file mode 100644 index 0000000..5ea4475 --- /dev/null +++ b/Server/src/test/java/net/simon987/server/assembly/instruction/SetzInstructionTest.java @@ -0,0 +1,42 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Register; +import net.simon987.server.assembly.RegisterSet; +import net.simon987.server.assembly.Status; + +import org.junit.Test; + +import static org.junit.Assert.*; + + +public class SetzInstructionTest { + private RegisterSet registers; + private Status status; + private SetccInstruction instruction; + private int SETCCOPCODE = SetccInstruction.SETE; + + public SetzInstructionTest() { + registers = new RegisterSet(); + registers.put(1, new Register("R")); + registers.clear(); + + status = new Status(); + status.clear(); + + instruction = new SetzInstruction(); + } + + /** + * SETE, SETZ Equal, Zero ZF=1 + */ + @Test + public void execution() { + status.setZeroFlag(true); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 1); + + status.setZeroFlag(false); + instruction.execute(registers, 1, SETCCOPCODE, status); + assertEquals(registers.get(1), 0); + } +}