#include #include TEST_CASE("Base64 encoding/decoding tests") { SECTION("Empty span") { std::vector data; std::string encoded = Garbage::Base64::Encode(data); REQUIRE(encoded.size() == 0); REQUIRE(Garbage::Base64::Validate(encoded)); std::vector decoded = Garbage::Base64::Decode(encoded); REQUIRE(encoded.size() == 0); } SECTION("Encoding short data") { std::string source("Many hands make light work."); std::vector data(source.begin(), source.end()); std::string encoded = Garbage::Base64::Encode(data); REQUIRE(encoded == "TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcmsu"); REQUIRE(Garbage::Base64::Validate(encoded)); } SECTION("Decoding short data") { std::string data("TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcmsu"); REQUIRE(Garbage::Base64::Validate(data)); std::vector decoded = Garbage::Base64::Decode(data); std::string destination(decoded.begin(), decoded.end()); REQUIRE(destination == "Many hands make light work."); } SECTION("Encoding with a padding char") { std::string source("With a padding"); std::vector data(source.begin(), source.end()); std::string encoded = Garbage::Base64::Encode(data); REQUIRE(encoded == "V2l0aCBhIHBhZGRpbmc="); REQUIRE(Garbage::Base64::Validate(encoded)); } SECTION("Decoding with a padding char") { std::string data("V2l0aCBhIHBhZGRpbmc="); REQUIRE(Garbage::Base64::Validate(data)); std::vector decoded = Garbage::Base64::Decode(data); std::string destination(decoded.begin(), decoded.end()); REQUIRE(destination == "With a padding"); } SECTION("Encoding with two padding chars") { std::string source("With two padding"); std::vector data(source.begin(), source.end()); std::string encoded = Garbage::Base64::Encode(data); REQUIRE(encoded == "V2l0aCB0d28gcGFkZGluZw=="); REQUIRE(Garbage::Base64::Validate(encoded)); } SECTION("Decoding with two padding chars") { std::string data("V2l0aCB0d28gcGFkZGluZw=="); REQUIRE(Garbage::Base64::Validate(data)); std::vector decoded = Garbage::Base64::Decode(data); std::string destination(decoded.begin(), decoded.end()); REQUIRE(destination == "With two padding"); } }