summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-04-01 22:06:42 -0400
committerbd <bdunahu@operationnull.com>2025-04-01 22:06:42 -0400
commitd4e3a7a3b1cff6885978093d5cc125e38cc397b3 (patch)
tree92caf723e7eadfa063fafe2291ca6ec4ed9513e0 /tests
parent68324683cde10c636a4a602644f3e64d24b0e412 (diff)
Finish adding initial tests for full pipeline
Diffstat (limited to 'tests')
-rw-r--r--tests/controller.cc10
-rw-r--r--tests/ex.cc39
2 files changed, 19 insertions, 30 deletions
diff --git a/tests/controller.cc b/tests/controller.cc
index c36eba6..c7e3c93 100644
--- a/tests/controller.cc
+++ b/tests/controller.cc
@@ -187,7 +187,6 @@ TEST_CASE_METHOD(ControllerPipeFixture, "two num adder", "[full pipe]")
CHECK(i->get_instr_bits() == b3);
delete i;
-
i = this->ct->advance(WAIT);
REQUIRE(i == nullptr);
i = this->ct->advance(WAIT);
@@ -259,7 +258,6 @@ TEST_CASE_METHOD(ControllerPipeFixture, "two num adder", "[full pipe]")
CHECK(i->get_time_of(WRITE) == 22);
CHECK(i->get_s1() == 0xE);
CHECK(i->get_s2() == 0x7);
- CHECK(i->get_s3() == 0x0); // doesn't exist
CHECK(this->ct->get_gprs().at(2) == 0x200);
CHECK(this->ct->get_gprs().at(6) == 0x1);
CHECK(i->get_pc() == 0x7);
@@ -332,11 +330,11 @@ TEST_CASE_METHOD(ControllerPipeFixture, "two num adder", "[full pipe]")
REQUIRE(i != nullptr);
CHECK(i->get_mnemonic() == NOP);
+
delete i;
-
i = this->ct->advance(WAIT);
REQUIRE(i != nullptr); // it was already in cache
-
+
CHECK(i->get_time_of(FETCH) == 29); // clear out pipe (4)
CHECK(i->get_time_of(DCDE) == 30);
CHECK(i->get_time_of(EXEC) == 31);
@@ -366,8 +364,8 @@ TEST_CASE_METHOD(ControllerPipeFixture, "two num adder", "[full pipe]")
CHECK(i->get_time_of(EXEC) == 34);
CHECK(i->get_time_of(MEM) == 35);
CHECK(i->get_time_of(WRITE) == 36);
- CHECK(i->get_s1() == 0x0);
- CHECK(i->get_s2() == 0x200);
+ CHECK(i->get_s1() == 0x1);
+ CHECK(i->get_s2() == 0x0);
CHECK(i->get_s3() == 0x0);
CHECK(this->ct->get_gprs().at(2) == 0x200);
CHECK(this->ct->get_gprs().at(6) == 0x1);
diff --git a/tests/ex.cc b/tests/ex.cc
index a0af6fe..13437f7 100644
--- a/tests/ex.cc
+++ b/tests/ex.cc
@@ -640,8 +640,7 @@ TEST_CASE_METHOD(EXFixture, "JRL", "[ex]")
InstrDTO *i;
m = JRL;
- s1 = 100, s2 = -42027, s3 = 0;
- this->ct->set_pc(42096);
+ s1 = 100, s2 = 69, s3 = 0;
i = execute_instr(s1, s2, s3, m);
CHECK(i->get_s1() == 69);
@@ -675,11 +674,10 @@ TEST_CASE_METHOD(EXFixture, "BEQ no cond", "[ex]")
InstrDTO *i;
m = BEQ;
- s1 = 100, s2 = -42027, s3 = 0;
- this->ct->set_pc(42096);
+ s1 = 100, s2 = 50, s3 = 0;
i = execute_instr(s1, s2, s3, m);
- CHECK(i->get_s1() == 42096);
+ CHECK(i->get_s1() == -1);
delete i;
}
@@ -691,12 +689,11 @@ TEST_CASE_METHOD(EXFixture, "BEQ", "[ex]")
InstrDTO *i;
m = BEQ;
- s1 = 100, s2 = -42027, s3 = 0;
- this->ct->set_pc(42096);
+ s1 = 100, s2 = 50, s3 = 0;
this->ct->set_condition(EQ, true);
i = execute_instr(s1, s2, s3, m);
- CHECK(i->get_s1() == 69);
+ CHECK(i->get_s1() == 50);
delete i;
}
@@ -708,11 +705,10 @@ TEST_CASE_METHOD(EXFixture, "BGT no cond", "[ex]")
InstrDTO *i;
m = BGT;
- s1 = 100, s2 = -42027, s3 = 0;
- this->ct->set_pc(42096);
+ s1 = 100, s2 = 50, s3 = 0;
i = execute_instr(s1, s2, s3, m);
- CHECK(i->get_s1() == 42096);
+ CHECK(i->get_s1() == -1);
delete i;
}
@@ -724,12 +720,11 @@ TEST_CASE_METHOD(EXFixture, "BGT", "[ex]")
InstrDTO *i;
m = BGT;
- s1 = 100, s2 = -42027, s3 = 0;
- this->ct->set_pc(42096);
+ s1 = 100, s2 = 50, s3 = 0;
this->ct->set_condition(GT, true);
i = execute_instr(s1, s2, s3, m);
- CHECK(i->get_s1() == 69);
+ CHECK(i->get_s1() == 50);
delete i;
}
@@ -742,10 +737,9 @@ TEST_CASE_METHOD(EXFixture, "BUF no cond", "[ex]")
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);
+ CHECK(i->get_s1() == -1);
delete i;
}
@@ -757,12 +751,11 @@ TEST_CASE_METHOD(EXFixture, "BUF", "[ex]")
InstrDTO *i;
m = BUF;
- s1 = 100, s2 = -42027, s3 = 0;
- this->ct->set_pc(42096);
+ s1 = 100, s2 = 50, s3 = 0;
this->ct->set_condition(UF, true);
i = execute_instr(s1, s2, s3, m);
- CHECK(i->get_s1() == 69);
+ CHECK(i->get_s1() == 50);
delete i;
}
@@ -775,10 +768,9 @@ TEST_CASE_METHOD(EXFixture, "BOF no cond", "[ex]")
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);
+ CHECK(i->get_s1() == -1);
delete i;
}
@@ -790,12 +782,11 @@ TEST_CASE_METHOD(EXFixture, "BOF", "[ex]")
InstrDTO *i;
m = BOF;
- s1 = 100, s2 = -42027, s3 = 0;
- this->ct->set_pc(42096);
+ s1 = 100, s2 = 50, s3 = 0;
this->ct->set_condition(OF, true);
i = execute_instr(s1, s2, s3, m);
- CHECK(i->get_s1() == 69);
+ CHECK(i->get_s1() == 50);
delete i;
}