#include #include #include #include #include #define REQUIRE(statement) do { if(!(statement)) { fprintf(stderr, "Assertion failed:\n%s\n", #statement); exit(1); } } while(0) #define FAIL(str) do { fprintf(stderr, "Failed:\n%s\n", (str)); exit(1); } while(0) int main() { sibs::SafeSerializer serializer; serializer.add((uint32_t)3563634); serializer.add((uint64_t)204232532533423632); serializer.add((uint8_t)2); serializer.add((uint8_t*)"hello", 5); REQUIRE(serializer.getBuffer().size() == 18); sibs::SafeDeserializer deserializer(serializer.getBuffer().data(), serializer.getBuffer().size()); REQUIRE(deserializer.extract() == 3563634); REQUIRE(deserializer.extract() == 204232532533423632); REQUIRE(deserializer.extract() == 2); char str[6]; str[5] = '\0'; deserializer.extract((uint8_t*)str, 5); REQUIRE(strcmp(str, "hello") == 0); REQUIRE(deserializer.empty()); try { deserializer.extract(); FAIL("Expected extract to fail since we have extracted all data"); } catch (sibs::DeserializeException &e) { } return 0; }