5 #include "sw/device/lib/base/mock_mmio.h"
7 #include "gtest/gtest.h"
11 using ::mock_mmio::LeInt;
12 using ::mock_mmio::MmioTest;
13 using ::testing::Test;
21 auto value = mmio_region_read32(dev, 0x0);
22 mmio_region_write32(dev, 0x4, ~value);
23 mmio_region_write8(dev, 0x12, (value >> 24) & 0xff);
24 mmio_region_write8(dev, 0x8, (value >> 16) & 0xff);
25 mmio_region_write8(dev, 0x4, (value >> 8) & 0xff);
26 mmio_region_write8(dev, 0x0, value & 0xff);
33 EXPECT_READ32(0x0, 0xdeadbeef);
34 EXPECT_WRITE32(0x4, 0x21524110);
35 EXPECT_WRITE8(0x12, 0xde);
36 EXPECT_WRITE8(0x8, 0xad);
37 EXPECT_WRITE8(0x4, 0xbe);
38 EXPECT_WRITE8(0x0, 0xef);
40 EXPECT_EQ(
WriteTwice(dev().region()), 0xdeadbeef);
46 TEST_F(MockMmioTest, ExpectReadZero) {
47 EXPECT_READ8(0x0, 0x0);
48 EXPECT_EQ(mmio_region_read8(dev().region(), 0x0), 0x0);
51 TEST_F(MockMmioTest, ExpectWithString) {
52 EXPECT_READ32(0xc, LeInt(
"*\0\0*"));
53 EXPECT_EQ(mmio_region_read32(dev().region(), 0xc), 0x2a00002a);
55 EXPECT_WRITE32(0x12, LeInt(
"abcd"));
56 mmio_region_write32(dev().region(), 0x12, 0x64636261);
59 TEST_F(MockMmioTest, ExpectWithBits) {
60 EXPECT_READ8(0xc, {{0x0,
false}, {0x1,
true}, {0x3,
true}});
61 EXPECT_EQ(mmio_region_read8(dev().region(), 0xc), 0b1010);
63 EXPECT_WRITE32(0x12, {{0x0, 0xfe}, {0x8, 0xca}});
64 mmio_region_write32(dev().region(), 0x12, 0xcafe);
67 TEST_F(MockMmioTest, ExpectMask) {
73 auto value = mmio_region_read32(dev().region(), 0x8);
78 value &= ~(1 << 0x10);
79 mmio_region_write32(dev().region(), 0x8, value);