#include "catch2/catch_test_macros.hpp" #include #include #include // WARN: This generation might be wrong!!! These test might be wrong!!! TEST_CASE("Hash disco 1") { XmppParser xml; const std::string doc = R"( )"; auto check_stanza = [](const Stanza &stanza) { const std::string hash = Xmpp::hash_disco_sha1(stanza); CHECK(hash == "tdfKhW7S+KYskVHBtEvgPUiK0mA="); }; xml.add_stanza_callback([check_stanza](const Stanza &stanza) { check_stanza(stanza); // Do the same checks on a copy of that stanza. Stanza copy(stanza); check_stanza(copy); // And do the same checks on moved-constructed stanza Stanza moved(std::move(copy)); }); CHECK(doc.size() <= std::numeric_limits::max()); xml.feed(doc.data(), static_cast(doc.size()), true); } // Just one more test case to make sure we aren't always generating the same string TEST_CASE("Hash disco 2") { XmppParser xml; const std::string doc = R"( )"; auto check_stanza = [](const Stanza &stanza) { const std::string hash = Xmpp::hash_disco_sha1(stanza); CHECK(hash == "/14s9S+QIGmb2qxhLvEpt/w64gw="); }; xml.add_stanza_callback([check_stanza](const Stanza &stanza) { check_stanza(stanza); // Do the same checks on a copy of that stanza. Stanza copy(stanza); check_stanza(copy); // And do the same checks on moved-constructed stanza Stanza moved(std::move(copy)); }); CHECK(doc.size() <= std::numeric_limits::max()); xml.feed(doc.data(), static_cast(doc.size()), true); } TEST_CASE("Hash disco 2 different order") { XmppParser xml; const std::string doc = R"( )"; auto check_stanza = [](const Stanza &stanza) { const std::string hash = Xmpp::hash_disco_sha1(stanza); CHECK(hash == "/14s9S+QIGmb2qxhLvEpt/w64gw="); }; xml.add_stanza_callback([check_stanza](const Stanza &stanza) { check_stanza(stanza); // Do the same checks on a copy of that stanza. Stanza copy(stanza); check_stanza(copy); // And do the same checks on moved-constructed stanza Stanza moved(std::move(copy)); }); CHECK(doc.size() <= std::numeric_limits::max()); xml.feed(doc.data(), static_cast(doc.size()), true); }