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 }