diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 1e808ab..fbf6b16 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -328,5 +328,8 @@ run span_deduction_guide_test.cpp ; run as_bytes_test.cpp ; run as_writable_bytes_test.cpp ; +run splitmix64_test.cpp + : : : $(pedantic-errors) ; + use-project /boost/core/swap : ./swap ; build-project ./swap ; diff --git a/test/splitmix64_test.cpp b/test/splitmix64_test.cpp new file mode 100644 index 0000000..7120d7a --- /dev/null +++ b/test/splitmix64_test.cpp @@ -0,0 +1,38 @@ +// Test for boost/core/detail/splitmix64.hpp +// +// Copyright 2022 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include + +int main() +{ + { + boost::detail::splitmix64 rng; + + boost::uint64_t r1 = rng(), x1 = ( boost::uint64_t(0xe220a839u) << 32 ) + 0x7b1dcdafu; + BOOST_TEST_EQ( r1, x1 ); + + for( int i = 0; i < 1000; ++i ) rng(); + + boost::uint64_t r2 = rng(), x2 = ( boost::uint64_t(0xdcad513cu) << 32 ) + 0x211f942du; + BOOST_TEST_EQ( r2, x2 ); + } + + { + boost::detail::splitmix64 rng( 12345 ); + + boost::uint64_t r1 = rng(), x1 = ( boost::uint64_t(0x22118258u) << 32 ) + 0xa9d111a0u; + BOOST_TEST_EQ( r1, x1 ); + + for( int i = 0; i < 1000; ++i ) rng(); + + boost::uint64_t r2 = rng(), x2 = ( boost::uint64_t(0xaaefb4b6u) << 32 ) + 0x5c15e958u; + BOOST_TEST_EQ( r2, x2 ); + } + + return boost::report_errors(); +}