1#include <xrpl/basics/hardened_hash.h>
2#include <xrpl/beast/unit_test.h>
24 template <
class Hasher>
44 template <
class Hasher>
78template <std::
size_t Bits,
class UInt = std::u
int64_t>
84 "UInt must be an unsigned integral type");
87 Bits % (8 *
sizeof(UInt)) == 0,
88 "Bits must be a multiple of 8*sizeof(UInt)");
91 Bits >= (8 *
sizeof(UInt)),
92 "Bits must be at least 8*sizeof(UInt)");
127 template <
class Hasher>
147#ifndef __INTELLISENSE__
148static_assert(
sha256_t::bits == 256,
"sha256_t must have 256 bits");
169 template <
template <
class T>
class U>
175 check<U<signed char>>();
176 check<U<unsigned char>>();
182 check<U<unsigned short>>();
184 check<U<unsigned int>>();
186 check<U<long long>>();
187 check<U<unsigned long>>();
188 check<U<unsigned long long>>();
191 check<U<long double>>();
194 template <
template <
class T>
class C>
199 C<detail::test_user_type_member<std::string>> c;
205 C<detail::test_user_type_free<std::string>> c;
215 check_user_type<detail::test_user_type_member>();
216 check_user_type<detail::test_user_type_free>();
223 check_container<detail::test_hardened_unordered_set>();
224 check_container<detail::test_hardened_unordered_map>();
225 check_container<detail::test_hardened_unordered_multiset>();
226 check_container<detail::test_hardened_unordered_multimap>();
void pass()
Record a successful test condition.
testcase_t testcase
Memberspace for declaring test cases.
friend void hash_append(Hasher &h, test_user_type_free const &a) noexcept
test_user_type_free(T const &t_=T())
friend void hash_append(Hasher &h, test_user_type_member const &a) noexcept
test_user_type_member(T const &t_=T())
void run() override
Runs the suite.
Seed functor once per construction.
static std::size_t const bytes
friend void hash_append(Hasher &h, unsigned_integer const &a) noexcept
void const * data() const noexcept
friend std::ostream & operator<<(std::ostream &s, unsigned_integer const &v)
std::array< UInt, size > m_vec
static unsigned_integer from_number(Int v)
static std::size_t const size
static std::size_t const bits
std::enable_if_t< is_contiguously_hashable< T, Hasher >::value > hash_append(Hasher &h, T const &t) noexcept
Logically concatenate input data to a Hasher.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.