diff options
author | bd <bdunahu@operationnull.com> | 2025-04-01 00:49:52 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-04-01 00:49:52 -0400 |
commit | 6579f7272905d1e25b43ef051da6c2180e60ca2b (patch) | |
tree | a4b217aa56126f7d05304ab93f6c36b66fd6b694 /tests/ex.cc | |
parent | a4e0e5ff6208205f6ebd980f9ed1eca91dcc4311 (diff) |
Ensure all stages only do work if they are not 'OK'
Diffstat (limited to 'tests/ex.cc')
-rw-r--r-- | tests/ex.cc | 80 |
1 files changed, 70 insertions, 10 deletions
diff --git a/tests/ex.cc b/tests/ex.cc index 9543c66..a0af6fe 100644 --- a/tests/ex.cc +++ b/tests/ex.cc @@ -33,9 +33,9 @@ class EXFixture i->set_mnemonic(m); this->dum->set_curr_instr(i); - i = this->ct->advance(OK); + i = this->ct->advance(WAIT); REQUIRE(i == nullptr); - i = this->ct->advance(OK); + i = this->ct->advance(WAIT); REQUIRE(i != nullptr); return i; @@ -668,6 +668,22 @@ TEST_CASE_METHOD(EXFixture, "JAL", "[ex]") delete i; } +TEST_CASE_METHOD(EXFixture, "BEQ no cond", "[ex]") +{ + signed int s1, s2, s3; + Mnemonic m; + InstrDTO *i; + + m = BEQ; + s1 = 100, s2 = -42027, s3 = 0; + this->ct->set_pc(42096); + i = execute_instr(s1, s2, s3, m); + + CHECK(i->get_s1() == 42096); + + delete i; +} + TEST_CASE_METHOD(EXFixture, "BEQ", "[ex]") { signed int s1, s2, s3; @@ -677,11 +693,26 @@ TEST_CASE_METHOD(EXFixture, "BEQ", "[ex]") m = BEQ; s1 = 100, s2 = -42027, s3 = 0; this->ct->set_pc(42096); + this->ct->set_condition(EQ, true); i = execute_instr(s1, s2, s3, m); CHECK(i->get_s1() == 69); - CHECK(!ct->get_condition(OF)); - CHECK(!ct->get_condition(UF)); + + delete i; +} + +TEST_CASE_METHOD(EXFixture, "BGT no cond", "[ex]") +{ + signed int s1, s2, s3; + Mnemonic m; + InstrDTO *i; + + m = BGT; + s1 = 100, s2 = -42027, s3 = 0; + this->ct->set_pc(42096); + i = execute_instr(s1, s2, s3, m); + + CHECK(i->get_s1() == 42096); delete i; } @@ -695,11 +726,26 @@ TEST_CASE_METHOD(EXFixture, "BGT", "[ex]") m = BGT; s1 = 100, s2 = -42027, s3 = 0; this->ct->set_pc(42096); + this->ct->set_condition(GT, true); i = execute_instr(s1, s2, s3, m); CHECK(i->get_s1() == 69); - CHECK(!ct->get_condition(OF)); - CHECK(!ct->get_condition(UF)); + + delete i; +} + +TEST_CASE_METHOD(EXFixture, "BUF no cond", "[ex]") +{ + signed int s1, s2, s3; + Mnemonic m; + InstrDTO *i; + + m = BUF; + s1 = 100, s2 = -42027, s3 = 0; + this->ct->set_pc(42096); + i = execute_instr(s1, s2, s3, m); + + CHECK(i->get_s1() == 42096); delete i; } @@ -713,11 +759,26 @@ TEST_CASE_METHOD(EXFixture, "BUF", "[ex]") m = BUF; s1 = 100, s2 = -42027, s3 = 0; this->ct->set_pc(42096); + this->ct->set_condition(UF, true); i = execute_instr(s1, s2, s3, m); CHECK(i->get_s1() == 69); - CHECK(!ct->get_condition(OF)); - CHECK(!ct->get_condition(UF)); + + delete i; +} + +TEST_CASE_METHOD(EXFixture, "BOF no cond", "[ex]") +{ + signed int s1, s2, s3; + Mnemonic m; + InstrDTO *i; + + m = BOF; + s1 = 100, s2 = -42027, s3 = 0; + this->ct->set_pc(42096); + i = execute_instr(s1, s2, s3, m); + + CHECK(i->get_s1() == 42096); delete i; } @@ -731,11 +792,10 @@ TEST_CASE_METHOD(EXFixture, "BOF", "[ex]") m = BOF; s1 = 100, s2 = -42027, s3 = 0; this->ct->set_pc(42096); + this->ct->set_condition(OF, true); i = execute_instr(s1, s2, s3, m); CHECK(i->get_s1() == 69); - CHECK(!ct->get_condition(OF)); - CHECK(!ct->get_condition(UF)); delete i; } |