Branch data Line data Source code
1 : : // ***************************************************************************** 2 : : /*! 3 : : \file src/RNGTest/TestU01.hpp 4 : : \copyright 2012-2015 J. Bakosi, 5 : : 2016-2018 Los Alamos National Security, LLC., 6 : : 2019-2021 Triad National Security, LLC. 7 : : All rights reserved. See the LICENSE file for details. 8 : : \brief TestU01 statistical test 9 : : \details TestU01 statistical test 10 : : */ 11 : : // ***************************************************************************** 12 : : #ifndef TestU01_h 13 : : #define TestU01_h 14 : : 15 : : #include "TestU01Props.hpp" 16 : : 17 : : #include "NoWarning/testu01.decl.h" 18 : : 19 : : namespace rngtest { 20 : : 21 : : //! TestU01 statistical test used polymorphically with rngtest::StatTest 22 : : template< class TestU01Props > 23 : : class TestU01 : public CBase_TestU01< TestU01Props > { 24 : : 25 : : public: 26 : : using Props = TestU01Props; 27 : : using Proxy = CProxy_TestU01< TestU01Props >; 28 : : 29 : : //! Constructor 30 : : //! \param[in] props TestU01 properties 31 [ + - ]: 120 : explicit TestU01( const TestU01Props& props ) : m_props( props ) {} 32 : : 33 : : //! Query and contribute number of results/test, i.e., p-values 34 [ + - ]: 40 : void npval() { m_props.proxy().npval( m_props.npval() ); } 35 : : 36 : : //! Query and contribute test name(s) 37 [ + - ]: 40 : void names() { m_props.proxy().names( m_props.names() ); } 38 : : 39 : : //! Run test then evaluate it 40 [ + - ]: 120 : void run() { m_props.proxy().evaluate( m_props.run() ); } 41 : : 42 : : //! Query and contribute test run time measured in seconds 43 [ + - ]: 120 : void time() { m_props.proxy().time( m_props.time() ); } 44 : : 45 : : private: 46 : : TestU01Props m_props; //!< TestU01 test properties 47 : : }; 48 : : 49 : : } // rngtest:: 50 : : 51 : : #define CK_TEMPLATES_ONLY 52 : : #include "NoWarning/testu01.def.h" 53 : : #undef CK_TEMPLATES_ONLY 54 : : 55 : : #endif // TestU01_h