/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
FWCore/Utilities/test/test_catch2_Digest.cc
98 строк
3 KB
Christopher Jones
Convert to catch2 v3 API
12 окт 2025, 01:38
12 окт 2025, 01:38
2edf1db
Код
Авторство
О чём код?
#include "catch2/catch_all.hpp" #include "FWCore/Utilities/interface/Digest.h" #include "FWCore/Utilities/interface/Exception.h" using cms::Digest; using cms::MD5Result; namespace { void testGivenString(std::string const& s) { Digest dig1(s); MD5Result r1 = dig1.digest(); Digest dig2; dig2.append(s); MD5Result r2 = dig2.digest(); REQUIRE(r1 == r2); // The result should be valid *iff* s is non-empty. REQUIRE(r1.isValid() == !s.empty()); REQUIRE(r1.toString().size() == 32); REQUIRE(r1.compactForm().size() == 16); } } // namespace TEST_CASE("Test cms::Digest", "[Digest]") { SECTION("Identical") { Digest dig1; dig1.append(std::string_view("hello")); Digest dig2("hello"); MD5Result r1 = dig1.digest(); MD5Result r2 = dig2.digest(); REQUIRE(r1 == r2); REQUIRE(!(r1 < r2)); REQUIRE(!(r2 < r1)); REQUIRE(r1.toString().size() == 32); } SECTION("various strings") { testGivenString("a"); testGivenString("{ }"); testGivenString("abc 123 abc"); } SECTION("empty string") { std::string e; testGivenString(e); Digest dig1; MD5Result r1 = dig1.digest(); MD5Result r2; REQUIRE(r1 == r2); REQUIRE(!r1.isValid()); } SECTION("conversions") { std::string data("aldjfakl\tsdjf34234 \najdf"); Digest dig(data); MD5Result r1 = dig.digest(); REQUIRE(r1.isValid()); std::string hexy = r1.toString(); REQUIRE(hexy.size() == 32); MD5Result r2; r2.fromHexifiedString(hexy); REQUIRE(r1 == r2); REQUIRE(r1.toString() == r2.toString()); REQUIRE(r1.compactForm() == r2.compactForm()); //check the MD5Result lookup table MD5Result lookup; MD5Result fromHex; for (unsigned int i = 0; i < 256; ++i) { for (unsigned int j = 0; j < 16; ++j) { lookup.bytes[j] = static_cast<char>(i); fromHex.fromHexifiedString(lookup.toString()); REQUIRE(lookup == fromHex); REQUIRE(lookup.toString() == fromHex.toString()); REQUIRE(lookup.compactForm() == fromHex.compactForm()); } } } SECTION("append equal") { std::string full("aldjfakl\tsdjf34234 \najdf"); Digest full_digest{full}; MD5Result full_r = full_digest.digest(); REQUIRE(full_r.isValid()); Digest append_digest; append_digest.append(std::string_view(full.data(), 10)); append_digest.append(std::string_view(full.data() + 10, 10)); append_digest.append(std::string_view(full.data() + 20, 4)); MD5Result append_r = append_digest.digest(); REQUIRE(append_r.isValid()); REQUIRE(full_r == append_r); } }