aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt25
-rw-r--r--test/ExampleTest.cpp7
-rw-r--r--test/i2ctcp/main.cpp46
-rw-r--r--test/makefile7
-rw-r--r--test/pbdrv/main.cpp18
5 files changed, 84 insertions, 19 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index a280a86..d5d6e0d 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,23 +1,24 @@
cmake_minimum_required(VERSION 3.29)
-project(puzzlebox_test C CXX ASM)
-
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
-add_executable(tests
- ExampleTest.cpp
-)
+project(pbtest C CXX ASM)
-enable_testing()
+add_executable(test
+ i2ctcp/main.cpp
+ pbdrv/main.cpp
+ )
add_subdirectory(lib/googletest)
+add_subdirectory(lib/pbdrv)
+add_subdirectory(lib/i2ctcp)
-target_include_directories(tests PRIVATE ${CMAKE_CURRENT_LIST_DIR})
-target_link_libraries(tests PRIVATE gtest_main)
+target_link_libraries(test
+ gtest_main
+ i2ctcp
+ mpack
+ pbdrv
+ )
-add_test(
- NAME tests
- COMMAND tests
-)
diff --git a/test/ExampleTest.cpp b/test/ExampleTest.cpp
deleted file mode 100644
index a3909f5..0000000
--- a/test/ExampleTest.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <gtest/gtest.h>
-
-class ExampleTest : public testing::Test {
-protected:
-};
-
-TEST_F(ExampleTest, Test) { EXPECT_EQ(5, 5); } \ No newline at end of file
diff --git a/test/i2ctcp/main.cpp b/test/i2ctcp/main.cpp
new file mode 100644
index 0000000..1f0c3ff
--- /dev/null
+++ b/test/i2ctcp/main.cpp
@@ -0,0 +1,46 @@
+#include <algorithm>
+#include <gtest/gtest.h>
+
+#include "i2ctcpv1.h"
+
+using std::min;
+
+const uint8_t data[] = { 0xff, 0x00, 0xde, 0xad, 0xbe, 0xef, };
+const size_t data_len = sizeof(data);
+const size_t chunk_size = 6;
+
+char * send_data = nullptr;
+size_t send_size = 0;
+
+TEST(i2ctcp, send) {
+ i2ctcp_msg_t send_msg = {
+ .addr = 0x1122,
+ .data = (char *) data,
+ .length = data_len,
+ };
+
+ ASSERT_TRUE(i2ctcp_write(&send_msg, &send_data, &send_size));
+ ASSERT_NE(send_data, nullptr);
+ ASSERT_GE(send_size, 0);
+}
+
+TEST(i2ctcp, recv) {
+ i2ctcp_msg_t recv_msg;
+ i2ctcp_read_reset(&recv_msg);
+ for (size_t i = 0; i < send_size; i += chunk_size) {
+ size_t expected_size = min(send_size, i + chunk_size) - i;
+
+ int parsed = i2ctcp_read(&recv_msg, send_data + i, expected_size);
+ EXPECT_GE(parsed, 0);
+
+ if (i + expected_size == send_size)
+ EXPECT_EQ(parsed, 0);
+ else
+ EXPECT_GT(parsed, 0);
+ }
+
+ ASSERT_NE(recv_msg.data, nullptr);
+ ASSERT_EQ(recv_msg.length, data_len);
+ ASSERT_EQ(0, memcmp(recv_msg.data, data, data_len));
+}
+
diff --git a/test/makefile b/test/makefile
new file mode 100644
index 0000000..7aeee34
--- /dev/null
+++ b/test/makefile
@@ -0,0 +1,7 @@
+TARGET = $(BUILD_DIR)/test
+
+include ../lazy.mk
+
+test: $(TARGET) FORCE
+ $(TARGET)
+
diff --git a/test/pbdrv/main.cpp b/test/pbdrv/main.cpp
new file mode 100644
index 0000000..de7e88a
--- /dev/null
+++ b/test/pbdrv/main.cpp
@@ -0,0 +1,18 @@
+#include <gtest/gtest.h>
+
+#include "pb-write.h"
+
+TEST(pbdrv, write) {
+
+ pbdrv_buf_t buf = pbdrv_write_cmd_req_set_state({
+ .header = { .sender = 0xf0, },
+ .state = PB_GS_PLAYING,
+ });
+ for (size_t i = 0; i < buf.size; i++) {
+ printf("%02x ", buf.data[i] & 0xff);
+ }
+ printf("\n");
+
+ ASSERT_TRUE(true);
+}
+