#include #include namespace larra::xmpp { constexpr std::string_view kSerializedData = R"( )"; constexpr std::string_view kCheckSerializeData = R"( )"; TEST(Stream, Serialize) { UserToUserStream originalStream; originalStream.from = BareJid{"user", "example.com"}; originalStream.to = BareJid{"anotheruser", "example.com"}; originalStream.id = "abc"; originalStream.version = "1.0"; originalStream.xmlLang = "en"; pugi::xml_document doc; pugi::xml_node streamNode = doc.append_child("stream:stream"); streamNode << originalStream; std::ostringstream oss; doc.child("stream:stream").print(oss, "\t"); const std::string serializedData = oss.str(); ASSERT_EQ(serializedData, kCheckSerializeData); } TEST(Stream, Deserialize) { pugi::xml_document parsedDoc; parsedDoc.load_string(kSerializedData.data()); const UserStream deserializedStream = UserStream::Parse(parsedDoc.child("stream:stream")); ASSERT_TRUE(deserializedStream.from.has_value()); ASSERT_EQ(ToString(*deserializedStream.from), "user@example.com"); ASSERT_FALSE(deserializedStream.to.has_value()); ASSERT_TRUE(deserializedStream.id.has_value()); ASSERT_EQ(deserializedStream.id.value(), "abc"); ASSERT_TRUE(deserializedStream.version.has_value()); ASSERT_EQ(deserializedStream.version.value(), "1.0"); ASSERT_TRUE(deserializedStream.xmlLang.has_value()); ASSERT_EQ(deserializedStream.xmlLang.value(), "en"); } } // namespace larra::xmpp