20#include <xrpl/basics/hardened_hash.h>
21#include <xrpl/beast/unit_test.h>
43 template <
class Hasher>
63 template <
class Hasher>
97template <std::
size_t Bits,
class UInt = std::u
int64_t>
103 "UInt must be an unsigned integral type");
106 Bits % (8 *
sizeof(UInt)) == 0,
107 "Bits must be a multiple of 8*sizeof(UInt)");
110 Bits >= (8 *
sizeof(UInt)),
111 "Bits must be at least 8*sizeof(UInt)");
146 template <
class Hasher>
166#ifndef __INTELLISENSE__
167static_assert(
sha256_t::bits == 256,
"sha256_t must have 256 bits");
188 template <
template <
class T>
class U>
194 check<U<signed char>>();
195 check<U<unsigned char>>();
201 check<U<unsigned short>>();
203 check<U<unsigned int>>();
205 check<U<long long>>();
206 check<U<unsigned long>>();
207 check<U<unsigned long long>>();
210 check<U<long double>>();
213 template <
template <
class T>
class C>
218 C<detail::test_user_type_member<std::string>> c;
224 C<detail::test_user_type_free<std::string>> c;
234 check_user_type<detail::test_user_type_member>();
235 check_user_type<detail::test_user_type_free>();
242 check_container<detail::test_hardened_unordered_set>();
243 check_container<detail::test_hardened_unordered_map>();
244 check_container<detail::test_hardened_unordered_multiset>();
245 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.