reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

hash.cpp (1329B)


      1 #include "helper.hpp"
      2 
      3 #include <hash.hpp>
      4 
      5 static const char *M = "[hash]";
      6 
      7 TEST_CASE("sha256 hashes", M) {
      8   Hash hash(Hash::SHA256);
      9 
     10   SECTION("empty")
     11     REQUIRE(hash.digest() ==
     12       "1220e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");
     13 
     14   SECTION("digest twice")
     15     REQUIRE(hash.digest() == hash.digest());
     16 
     17   SECTION("single chunk") {
     18     hash.addData("hello world", 11);
     19 
     20     REQUIRE(hash.digest() ==
     21       "1220b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9");
     22   }
     23 
     24   SECTION("split chunks") {
     25     hash.addData("foo bar", 7);
     26     hash.addData(" bazqux", 4);
     27 
     28     REQUIRE(hash.digest() ==
     29       "1220dbd318c1c462aee872f41109a4dfd3048871a03dedd0fe0e757ced57dad6f2d7");
     30   }
     31 }
     32 
     33 TEST_CASE("invalid algorithm", M) {
     34   Hash hash(static_cast<Hash::Algorithm>(0));
     35   hash.addData("foo bar", 7);
     36   REQUIRE(hash.digest() == "");
     37 }
     38 
     39 TEST_CASE("get hash algorithm", M) {
     40   Hash::Algorithm algo;
     41 
     42   SECTION("empty string")
     43     REQUIRE_FALSE(Hash::getAlgorithm("", &algo));
     44 
     45   SECTION("only sha-256 ID")
     46     REQUIRE_FALSE(Hash::getAlgorithm("12", &algo));
     47 
     48   SECTION("unexpected size")
     49     REQUIRE_FALSE(Hash::getAlgorithm("1202ab", &algo));
     50 
     51   SECTION("seemingly good (but not actually) sha-256") {
     52     REQUIRE(Hash::getAlgorithm("1202abcd", &algo));
     53     REQUIRE(algo == Hash::SHA256);
     54   }
     55 }