Files
OpenColorIO/tests/cpu/PathUtils_tests.cpp
b2969231d4 added custom callback for computehash (#1169)
Signed-off-by: EmperorYP7 <pandeyyash04@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2020-10-26 12:50:37 -04:00

89 lines
1.8 KiB
C++

// SPDX-License-Identifier: BSD-3-Clause
// Copyright Contributors to the OpenColorIO Project.
#include "PathUtils.cpp"
#include "testutils/UnitTest.h"
#include "UnitTestUtils.h"
namespace OCIO_NAMESPACE
{
namespace
{
// A custom compute hash function for testing.
std::string CustomComputeHash(const std::string & filename)
{
std::ostringstream testHasher;
testHasher << std::hash<std::string>{}(filename + "this is custom hash");
return testHasher.str();
}
} //anon.
// A class for testing the working of custom callback for compute hash.
class ComputeHashGuard
{
public:
ComputeHashGuard();
ComputeHashGuard(ComputeHashGuard &) = delete;
~ComputeHashGuard();
};
ComputeHashGuard::ComputeHashGuard()
{
SetComputeHashFunction(CustomComputeHash);
}
ComputeHashGuard::~ComputeHashGuard()
{
ResetComputeHashFunction();
}
}
namespace OCIO = OCIO_NAMESPACE;
OCIO_ADD_TEST(PathUtils, compute_hash)
{
const std::string file1 = OCIO::GetTestFilesDir() + "/lut1d_4.spi1d";
const std::string file2 = OCIO::GetTestFilesDir() + "/lut1d_5.spi1d";
OCIO_CHECK_EQUAL(OCIO::g_hashFunction(file1), OCIO::g_hashFunction(file1));
OCIO_CHECK_NE(OCIO::g_hashFunction(file1), OCIO::g_hashFunction(file2));
const std::string result1 = OCIO::g_hashFunction(file1);
const std::string result2 = OCIO::g_hashFunction(file2);
std::string result3, result4;
{
OCIO::ComputeHashGuard tester;
OCIO_CHECK_NE(OCIO::g_hashFunction(file1), result1);
OCIO_CHECK_NE(OCIO::g_hashFunction(file2), result2);
OCIO_CHECK_EQUAL(OCIO::g_hashFunction(file1), OCIO::g_hashFunction(file1));
result3 = OCIO::g_hashFunction(file1);
result4 = OCIO::g_hashFunction(file2);
}
OCIO_CHECK_NE(result3, OCIO::g_hashFunction(file1));
OCIO_CHECK_NE(result4, OCIO::g_hashFunction(file2));
}