Add common data structures
This adds some common data structures and functions needed for RDE BEJ.
The decoder core is written in C so that we can use this with some other
future platforms.
clang-tidy is complaining about C style header. I tried adding a
.clang-tidy-ignore file but it did not work. And since this is mainly a
C library, I deleted the .clang-tidy.
Signed-off-by: Kasun Athukorala <kasunath@google.com>
Change-Id: Ice07527b23cd00c65cd11ed114ea4faefcc085fb
diff --git a/test/meson.build b/test/meson.build
new file mode 100644
index 0000000..a775a0c
--- /dev/null
+++ b/test/meson.build
@@ -0,0 +1,26 @@
+gtest = dependency('gtest', main: true, disabler: true, required: get_option('tests'))
+gmock = dependency('gmock', disabler: true, required: get_option('tests'))
+
+if not gtest.found() or not gmock.found()
+ gtest_proj = import('cmake').subproject('googletest', required: false)
+ if gtest_proj.found()
+ gtest = declare_dependency(
+ dependencies: [
+ gtest_proj.dependency('gtest'),
+ gtest_proj.dependency('gtest_main'),
+ ])
+ gmock = gtest_proj.dependency('gmock')
+ else
+ assert(not get_option('tests').enabled(), 'Googletest is required')
+ endif
+endif
+
+gtests = [
+ 'rde_common',
+]
+foreach t : gtests
+ test(t, executable(t.underscorify(), t + '_test.cpp',
+ build_by_default: false,
+ implicit_include_directories: false,
+ dependencies: [libbej, gtest, gmock]))
+endforeach
diff --git a/test/rde_common_test.cpp b/test/rde_common_test.cpp
new file mode 100644
index 0000000..3217ffd
--- /dev/null
+++ b/test/rde_common_test.cpp
@@ -0,0 +1,39 @@
+#include "rde_common.h"
+
+#include <gmock/gmock-matchers.h>
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+namespace rde
+{
+
+TEST(RdeCommonTest, RdeGetUnsignedIntegerTest)
+{
+ constexpr uint8_t bytes[] = {0xab, 0xcd, 0xef, 0x12,
+ 0x13, 0x65, 0x23, 0x89};
+ EXPECT_THAT(rdeGetUnsignedInteger(bytes, /*numOfBytes=*/1), 0xab);
+ EXPECT_THAT(rdeGetUnsignedInteger(bytes, /*numOfBytes=*/2), 0xcdab);
+ EXPECT_THAT(rdeGetUnsignedInteger(bytes, /*numOfBytes=*/5), 0x1312efcdab);
+ EXPECT_THAT(rdeGetUnsignedInteger(bytes, /*numOfBytes=*/8),
+ 0x8923651312efcdab);
+}
+
+TEST(RdeCommonTest, RdeGetNnintTest)
+{
+ constexpr uint8_t nnint1[] = {0x03, 0xcd, 0xef, 0x12};
+ constexpr uint8_t nnint2[] = {0x08, 0xab, 0xcd, 0xef, 0x12,
+ 0x13, 0x65, 0x23, 0x89};
+ EXPECT_THAT(rdeGetNnint(nnint1), 0x12efcd);
+ EXPECT_THAT(rdeGetNnint(nnint2), 0x8923651312efcdab);
+}
+
+TEST(RdeCommonTest, RdeGetNnintSizeTest)
+{
+ constexpr uint8_t nnint1[] = {0x03, 0xcd, 0xef, 0x12};
+ constexpr uint8_t nnint2[] = {0x08, 0xab, 0xcd, 0xef, 0x12,
+ 0x13, 0x65, 0x23, 0x89};
+ EXPECT_THAT(rdeGetNnintSize(nnint1), 4);
+ EXPECT_THAT(rdeGetNnintSize(nnint2), 9);
+}
+
+} // namespace rde