5#include <gtest/gtest.h>
11TEST(DmaRegionTest, DefaultConstructedIsInvalid) {
19TEST(DmaRegionTest, ValidRegion) {
32TEST(DmaRegionTest, NullVirtIsInvalid) {
33 DmaRegion region{.
virt =
nullptr, .phys = 0x1000, .size = 4096};
37TEST(DmaRegionTest, ZeroSizeIsInvalid) {
43TEST(DmaRegionTest, SubRegionSuccess) {
51 auto sub = region.SubRegion(256, 512);
52 ASSERT_TRUE(sub.has_value());
59TEST(DmaRegionTest, SubRegionOutOfBoundsFails) {
63 auto sub = region.SubRegion(200, 100);
68TEST(DmaRegionTest, SubRegionExactBoundarySucceeds) {
72 auto sub = region.SubRegion(0, 256);
73 ASSERT_TRUE(sub.has_value());
78 uintptr_t addr = 0xDEAD'BEEF;
TEST(DmaRegionTest, DefaultConstructedIsInvalid)
auto IdentityVirtToPhys(uintptr_t virt) -> uintptr_t
恒等映射:物理地址 == 虚拟地址(早期启动 / 无 MMU 时的默认实现)
void * virt
虚拟(CPU 可访问)基地址
#define EXPECT_TRUE(cond, msg)
#define EXPECT_FALSE(cond, msg)
#define EXPECT_EQ(val1, val2, msg)