mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-06 06:32:56 +01:00
Add unit tests for SHA1 hashing
This commit is contained in:
@@ -153,6 +153,11 @@ add_executable(test_localisation ${STRING_TEST_SOURCES})
|
||||
target_link_libraries(test_localisation ${GTEST_LIBRARIES} test-common ${LDL} z)
|
||||
add_test(NAME localisation COMMAND test_localisation)
|
||||
|
||||
# Hash tests
|
||||
add_executable(test_hash "${CMAKE_CURRENT_LIST_DIR}/HashTests.cpp")
|
||||
target_link_libraries(test_hash ${GTEST_LIBRARIES} libopenrct2)
|
||||
add_test(NAME Hash COMMAND test_hash)
|
||||
|
||||
# ImageImporter tests
|
||||
add_executable(test_imageimporter "${CMAKE_CURRENT_LIST_DIR}/ImageImporterTests.cpp"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/TestData.cpp")
|
||||
|
||||
55
test/tests/HashTests.cpp
Normal file
55
test/tests/HashTests.cpp
Normal file
@@ -0,0 +1,55 @@
|
||||
#include <string>
|
||||
#include <openrct2/core/Hash.h>
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
class HashTests : public testing::Test
|
||||
{
|
||||
public:
|
||||
template<typename T>
|
||||
void AssertHash(std::string expected, T hash)
|
||||
{
|
||||
auto actual = StringToHex(hash);
|
||||
ASSERT_EQ(expected, actual);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
std::string StringToHex(T input)
|
||||
{
|
||||
std::string result;
|
||||
result.reserve(input.size() * 2);
|
||||
for (auto b : input)
|
||||
{
|
||||
static_assert(sizeof(b) == 1);
|
||||
|
||||
char buf[3];
|
||||
snprintf(buf, 3, "%02x", b);
|
||||
result.append(buf);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(HashTests, SHA1_Basic)
|
||||
{
|
||||
std::string input = "The quick brown fox jumped over the lazy dog.";
|
||||
auto result = Hash::SHA1(input.data(), input.size());
|
||||
AssertHash("c0854fb9fb03c41cce3802cb0d220529e6eef94e", result);
|
||||
}
|
||||
|
||||
TEST_F(HashTests, SHA1_Multiple)
|
||||
{
|
||||
std::string input[] = {
|
||||
"Merry-go-round 2 looks too intense for me",
|
||||
"This park is really clean and tidy",
|
||||
"This balloon from Balloon Stall 1 is really good value"
|
||||
};
|
||||
|
||||
auto alg = Hash::CreateSHA1();
|
||||
for (auto s : input)
|
||||
{
|
||||
alg->Update(s.data(), s.size());
|
||||
}
|
||||
auto result = alg->Finish();
|
||||
|
||||
AssertHash("758a238d9a4748f80cc81f12be3885d5e45d34c2", result);
|
||||
}
|
||||
@@ -56,6 +56,7 @@
|
||||
<ClInclude Include="TestData.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="HashTests.cpp" />
|
||||
<ClCompile Include="LanguagePackTest.cpp" />
|
||||
<ClCompile Include="ImageImporterTests.cpp" />
|
||||
<ClCompile Include="IniReaderTest.cpp" />
|
||||
|
||||
Reference in New Issue
Block a user