012-base32.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "catch.hpp"
  2. #include "test-utils.h"
  3. #include "utils/base32.h"
  4. using namespace syncspirit::test;
  5. namespace fs = boost::filesystem;
  6. using b32 = syncspirit::utils::base32;
  7. TEST_CASE("base32 encode/decode", "[support]") {
  8. SECTION("encode") {
  9. REQUIRE(b32::encode("f") == "MY");
  10. REQUIRE(b32::encode("fo") == "MZXQ");
  11. REQUIRE(b32::encode("foo") == "MZXW6");
  12. REQUIRE(b32::encode("foo-") == "MZXW6LI");
  13. REQUIRE(b32::encode("foo-b") == "MZXW6LLC");
  14. REQUIRE(b32::encode("foo-bar") == "MZXW6LLCMFZA");
  15. REQUIRE(b32::encode("lorem ipsum dolor sit amet") == "NRXXEZLNEBUXA43VNUQGI33MN5ZCA43JOQQGC3LFOQ");
  16. }
  17. SECTION("decode") {
  18. REQUIRE(b32::decode("MY").value() == "f");
  19. REQUIRE(b32::decode("MZXQ").value() == "fo");
  20. REQUIRE(b32::decode("MZXW6").value() == "foo");
  21. REQUIRE(b32::decode("MZXW6LI").value() == "foo-");
  22. REQUIRE(b32::decode("MZXW6LLC").value() == "foo-b");
  23. REQUIRE(b32::decode("MZXW6LLCMFZA").value() == "foo-bar");
  24. REQUIRE(b32::decode("NRXXEZLNEBUXA43VNUQGI33MN5ZCA43JOQQGC3LFOQ").value() == "lorem ipsum dolor sit amet");
  25. }
  26. SECTION("binary string") {
  27. unsigned char in[] = {0xA1, 0xB2, 0xC3, 0xD4, 0xE5, 0xF6, 0x00};
  28. std::string orig(reinterpret_cast<const char *>(in));
  29. auto e = b32::encode(orig);
  30. auto d = b32::decode(e);
  31. REQUIRE((bool)d);
  32. REQUIRE(d.value() == orig);
  33. }
  34. }