Add IpmbSensor unit tests

Because everything was packed into IpmbSensor.cpp, which also included
main(), this commit breaks it up into the patterns we have in other
sensors, with <X>main.cpp containing the things for main.

While this doesn't clean up everything, it at least makes
processResponse unit testable, and adds one minor test for it.

Change-Id: I1eabf650ff635211e5b9a94816c2ffce250ed252
Signed-off-by: Ed Tanous <ed@tanous.net>
diff --git a/tests/meson.build b/tests/meson.build
index e5ad2ea..21f44a0 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -36,3 +36,22 @@
         include_directories: '../src',
     ),
 )
+
+test(
+    'test_ipmb',
+    executable(
+        'test_ipmb',
+        '../src/IpmbSensor.cpp',
+        '../src/Utils.cpp',
+        '../src/IpmbSDRSensor.cpp',
+        'test_IpmbSensor.cpp',
+        dependencies: ut_deps_list,
+        link_with: [
+            utils_a,
+            thresholds_a,
+            devicemgmt_a
+        ],
+        implicit_include_directories: false,
+        include_directories: '../src',
+    ),
+)
diff --git a/tests/test_IpmbSensor.cpp b/tests/test_IpmbSensor.cpp
new file mode 100644
index 0000000..3168993
--- /dev/null
+++ b/tests/test_IpmbSensor.cpp
@@ -0,0 +1,23 @@
+#include "IpmbSensor.hpp"
+
+#include <cstddef>
+#include <cstdint>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+namespace
+{
+
+TEST(IPMBSensor, Byte0)
+{
+    std::vector<uint8_t> data;
+    data.push_back(42);
+
+    double responseValue = 0.0;
+    size_t errCount = 0;
+    EXPECT_TRUE(IpmbSensor::processReading(ReadingFormat::byte0, 0, data,
+                                           responseValue, errCount));
+    EXPECT_EQ(responseValue, 42.0);
+}
+} // namespace