From 92e4b6d5522e53e6868b9b0c52b8e54d10bbf606 Mon Sep 17 00:00:00 2001 From: aqua Date: Sun, 12 Mar 2023 14:53:27 +0200 Subject: Add unit tests for C drivers --- devices/uart/sys_io.hh | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 devices/uart/sys_io.hh (limited to 'devices/uart/sys_io.hh') diff --git a/devices/uart/sys_io.hh b/devices/uart/sys_io.hh new file mode 100644 index 0000000..142c9c1 --- /dev/null +++ b/devices/uart/sys_io.hh @@ -0,0 +1,34 @@ +#pragma once + +#include + +class IPort { +public: + virtual unsigned char inb(unsigned short) const = 0; + virtual void outb(unsigned char, unsigned short) const = 0; +}; + +class MockPort : public IPort { +public: + MOCK_METHOD(unsigned char, inb, (unsigned short), (const, override)); + MOCK_METHOD(void, outb, (unsigned char, unsigned short), (const, override)); +}; + +static std::unique_ptr mockPort; + +// mock free functions +extern "C" { +unsigned char +inb(unsigned short v) +{ + EXPECT_TRUE(mockPort) << "MockPort was not set up by the test fixture"; + return mockPort->inb(v); +} + +void +outb(unsigned char p, unsigned short v) +{ + EXPECT_TRUE(mockPort) << "MockPort was not set up by the test fixture"; + return mockPort->outb(p, v); +} +} -- cgit v1.2.1