#include #include namespace hf3fs::tests { namespace { TEST(Serializer, testPutChar) { String s; Serializer ser(s); ser.putChar('a'); ser.putChar('b'); ser.putChar('c'); ASSERT_EQ(s, "abc"); } TEST(Serializer, testPutIntAsChar) { String s; Serializer ser(s); ser.putIntAsChar('a'); ser.putIntAsChar('b'); ser.putIntAsChar('c'); ASSERT_EQ(s, "abc"); } TEST(Serializer, testPutShortString) { String s; Serializer ser(s); ser.putShortString("abc"); ASSERT_EQ(s.size(), 4); ASSERT_EQ(s[0], 3); ASSERT_EQ(s.substr(1), "abc"); } TEST(Deserializer, testGetChar) { String s("abc"); Deserializer des(s); String res; for (auto c = des.getChar(); c.hasValue(); c = des.getChar()) { res.push_back(c.value()); } ASSERT_TRUE(des.reachEnd()); ASSERT_TRUE(!des.getChar().hasValue()); ASSERT_EQ(res, "abc"); } TEST(Deserializer, testGetIntFromChar) { String s; Serializer ser(s); ser.putIntAsChar(100); ser.putIntAsChar(-50); ser.putIntAsChar(50); Deserializer des(s); auto c0 = des.getIntFromChar(); ASSERT_TRUE(c0.hasValue()); ASSERT_EQ(c0.value(), 100); auto c1 = des.getIntFromChar(); ASSERT_TRUE(c1.hasValue()); ASSERT_EQ(c1.value(), -50); auto c2 = des.getIntFromChar(); ASSERT_TRUE(c2.hasValue()); ASSERT_EQ(c2.value(), 50); ASSERT_TRUE(des.reachEnd()); ASSERT_TRUE(!des.getIntFromChar().hasValue()); } TEST(Deserializer, testGetShortString) { String s; Serializer ser(s); ser.putShortString("abc"); Deserializer des(s); ASSERT_EQ(des.getShortString().value(), "abc"); ASSERT_TRUE(des.reachEnd()); ASSERT_TRUE(!des.getShortString().hasValue()); } TEST(Deserializer, testGet) { struct T { int x; char y; }; T t = {1, 2}; String s; Serializer ser(s); ser.put(t); Deserializer des(s); auto res = des.get(); ASSERT_TRUE(res.hasValue()); ASSERT_TRUE(des.reachEnd()); ASSERT_EQ(res.value().x, 1); ASSERT_EQ(res.value().y, 2); ASSERT_TRUE(!des.get().hasValue()); } TEST(Deserializer, testGetRaw) { String s = "abcdefg"; Deserializer des(s); auto res = des.getRaw(1); ASSERT_TRUE(res.hasValue()); ASSERT_EQ(res.value(), "a"); res = des.getRaw(2); ASSERT_TRUE(res.hasValue()); ASSERT_EQ(res.value(), "bc"); res = des.getRaw(5); ASSERT_TRUE(!res.hasValue()); res = des.getRaw(1); ASSERT_TRUE(res.hasValue()); ASSERT_EQ(res.value(), "d"); res = des.getRawUntilEnd(); ASSERT_TRUE(res.hasValue()); ASSERT_EQ(res.value(), "efg"); res = des.getRawUntilEnd(); ASSERT_TRUE(res.hasValue()); ASSERT_EQ(res.value(), ""); ASSERT_TRUE(des.reachEnd()); ASSERT_TRUE(!des.getRaw(1).hasValue()); } } // namespace } // namespace hf3fs::tests