// -*- mode: c++; c-basic-offset: 2; -*- #include "common.hh" #include "test.hh" #include "test_package.hh" namespace { bool test_sanity() { Package pkg1; Package pkg2; setup(&pkg1); uint8_t tmp[4096]; auto size = write_package(pkg1, tmp, sizeof(tmp)); ASSERT_TRUE(size < sizeof(tmp)); ASSERT_EQ(size, read_package(&pkg2, tmp, sizeof(tmp))); ASSERT_TRUE(pkg_eq(pkg1, pkg2)); return true; } bool test_overflow() { Package pkg1; setup(&pkg1); uint8_t tmp[4096]; auto size = write_package(pkg1, tmp, sizeof(tmp)); for (size_t i = 0; i < size; ++i) { memset(tmp + size, 0, sizeof(tmp) - size); auto s2 = write_package(pkg1, tmp + size, i); ASSERT_EQ(size, s2); ASSERT_EQ(0, tmp[size + i]); } auto s2 = write_package(pkg1, tmp + size, size); ASSERT_EQ(size, s2); ASSERT_EQ(0, memcmp(tmp, tmp + size, size)); return true; } bool test_null() { Package pkg1; setup(&pkg1); uint8_t tmp[4096]; auto size = write_package(pkg1, tmp, sizeof(tmp)); auto s2 = write_package(pkg1, NULL, 0); ASSERT_EQ(size, s2); s2 = write_package(pkg1, NULL, sizeof(tmp)); ASSERT_EQ(size, s2); return true; } bool test_empty() { Package pkg1; Package pkg2; setup(&pkg1); pkg1.source_host.clear(); pkg1.target_host.clear(); uint8_t tmp[4096]; auto size = write_package(pkg1, tmp, sizeof(tmp)); ASSERT_EQ(size, read_package(&pkg2, tmp, sizeof(tmp))); ASSERT_TRUE(pkg_eq(pkg1, pkg2)); return true; } } // namespace int main(void) { BEFORE; RUN(test_sanity()); RUN(test_overflow()); RUN(test_null()); RUN(test_empty()); AFTER; }