Add unit tests for writing order, bus values, bank, initial_clear and OPL mode; fix OPL register address
This commit is contained in:
parent
997fd7fb6e
commit
86e13c1c32
|
|
@ -1,23 +1,80 @@
|
|||
#include <gtest/gtest.h>
|
||||
#include <gmock/gmock.h>
|
||||
#include "YMF262-HAL.hpp"
|
||||
#include "FakeGPIO.hpp"
|
||||
|
||||
class YMF262_HALWriteTest : public ::testing::Test {
|
||||
class YMF262_HALTest : public ::testing::Test {
|
||||
protected:
|
||||
FakeGpio fake;
|
||||
YMF262_HAL<FakeGpio> hal{fake, 14318000, 216000000};
|
||||
// ^ fake e hal criados ANTES de cada teste, prontos pra usar
|
||||
};
|
||||
|
||||
TEST_F(YMF262_HALWriteTest,TestForEmptyRun) {
|
||||
|
||||
TEST_F(YMF262_HALTest, TestWriteRun) {
|
||||
hal.write(Bank::BANK_0, 0x40, 0x20);
|
||||
EXPECT_NE(fake.operations.size(),0);
|
||||
EXPECT_NE(fake.bus_values.size(), 0);
|
||||
EXPECT_NE(fake.delays.size(), 0);
|
||||
|
||||
EXPECT_THAT(fake.operations, testing::ElementsAre(
|
||||
"a0 ADDRESS",
|
||||
"a1 BANK_0",
|
||||
"delay_ticks",
|
||||
"cs ACTIVE",
|
||||
"wr ACTIVE",
|
||||
"delay_ticks",
|
||||
"data_bus",
|
||||
"delay_ticks",
|
||||
"wr INACTIVE",
|
||||
"cs INACTIVE",
|
||||
"delay_ticks",
|
||||
"delay_ticks",
|
||||
"delay_ticks",
|
||||
"a0 DATA",
|
||||
"a1 BANK_0",
|
||||
"delay_ticks",
|
||||
"cs ACTIVE",
|
||||
"wr ACTIVE",
|
||||
"delay_ticks",
|
||||
"data_bus",
|
||||
"delay_ticks",
|
||||
"wr INACTIVE",
|
||||
"cs INACTIVE",
|
||||
"delay_ticks",
|
||||
"delay_ticks",
|
||||
"delay_ticks"
|
||||
));
|
||||
}
|
||||
|
||||
TEST_F(YMF262_HALTest, TestWriteDataBusValues) {
|
||||
hal.write(Bank::BANK_0, 0x40, 0x20);
|
||||
EXPECT_THAT(fake.bus_values, testing::ElementsAre(0x40, 0x20));
|
||||
|
||||
}
|
||||
|
||||
TEST_F(YMF262_HALWriteTest, A0MudaEntreCiclos) {
|
||||
hal.write(Bank::BANK_0, 0x40, 0x20);
|
||||
EXPECT_EQ(fake.operations.front(), "a0 ADDRESS");
|
||||
}
|
||||
TEST_F(YMF262_HALTest, TestWriteBankValue) {
|
||||
hal.write(Bank::BANK_1, 0x40, 0x20);
|
||||
// verifica que aparece "a1 BANK_1" nas operações, não "a1 BANK_0"
|
||||
EXPECT_THAT(fake.operations, testing::Contains("a1 BANK_1"));
|
||||
EXPECT_THAT(fake.operations, testing::Not(testing::Contains("a1 BANK_0")));
|
||||
}
|
||||
|
||||
TEST_F(YMF262_HALTest,TestWriteSetInitialClear) {
|
||||
|
||||
hal.initial_clear();
|
||||
EXPECT_THAT(fake.operations, testing::ElementsAre(
|
||||
"ic ACTIVE",
|
||||
"delay_ticks",
|
||||
"ic INACTIVE",
|
||||
"delay_ticks"
|
||||
));
|
||||
}
|
||||
|
||||
TEST_F(YMF262_HALTest, TestSetOPLModeToOPL3) {
|
||||
hal.set_OPL_Mode(OPLMode::OPL3);
|
||||
EXPECT_THAT(fake.bus_values, testing::ElementsAre(0x05, 0x01));
|
||||
EXPECT_THAT(fake.operations, testing::Contains("a1 BANK_1"));
|
||||
}
|
||||
|
||||
TEST_F(YMF262_HALTest, TestSetOPLModeToOPL2) {
|
||||
hal.set_OPL_Mode(OPLMode::OPL2);
|
||||
EXPECT_THAT(fake.bus_values, testing::ElementsAre(0x05, 0x00));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue