diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/CMakeLists.txt | 25 | ||||
-rw-r--r-- | test/ExampleTest.cpp | 7 | ||||
-rw-r--r-- | test/i2ctcp/main.cpp | 46 | ||||
-rw-r--r-- | test/makefile | 7 | ||||
-rw-r--r-- | test/pbdrv/main.cpp | 18 |
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); +} + |