Walker test code coverage report
Current view: top level - RNGTest - SmallCrush.cpp (source / functions) Hit Total Coverage
Commit: test_coverage.info Lines: 24 24 100.0 %
Date: 2022-09-21 13:52:12 Functions: 1 1 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 51 120 42.5 %

           Branch data     Line data    Source code
       1                 :            : // *****************************************************************************
       2                 :            : /*!
       3                 :            :   \file      src/RNGTest/SmallCrush.cpp
       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     Class re-creating the TestU01 library's SmallCrush battery
       9                 :            :   \details   Class re-creating the TestU01 library's SmallCrush battery.
      10                 :            : */
      11                 :            : // *****************************************************************************
      12                 :            : 
      13                 :            : #include "NoWarning/charm.hpp"
      14                 :            : #include "NoWarning/pup_stl.hpp"
      15                 :            : #include "NoWarning/pup.hpp"
      16                 :            : 
      17                 :            : extern "C" {
      18                 :            :   #include <gdef.h>
      19                 :            :   #include <gofw.h>
      20                 :            :   #include <sknuth.h>
      21                 :            :   #include <sres.h>
      22                 :            :   #include <sstring.h>
      23                 :            :   #include <swalk.h>
      24                 :            : }
      25                 :            : 
      26                 :            : #include "Tags.hpp"
      27                 :            : #include "PUPUtil.hpp"
      28                 :            : #include "TestU01.hpp"
      29                 :            : #include "StatTest.hpp"
      30                 :            : #include "TestStack.hpp"
      31                 :            : #include "TestU01Props.hpp"
      32                 :            : #include "TestU01Stack.hpp"
      33                 :            : #include "SmallCrush.hpp"
      34                 :            : 
      35                 :            : namespace rngtest {
      36                 :            : 
      37                 :            : extern TestStack g_testStack;
      38                 :            : 
      39                 :            : } // rngtest::
      40                 :            : 
      41                 :            : using rngtest::SmallCrush;
      42                 :            : 
      43                 :            : void
      44                 :         12 : SmallCrush::addTests( std::vector< std::function< StatTest() > >& tests,
      45                 :            :                       tk::ctr::RNGType rng,
      46                 :            :                       CProxy_TestU01Suite& proxy )
      47                 :            : // *****************************************************************************
      48                 :            : // Add statistical tests to battery
      49                 :            : //! \details This function adds, i.e., registers, all statistical tests to the
      50                 :            : //!   test stack corresponding to the TestU01 library's SmallCrush battery.
      51                 :            : //! \param[in] tests Vector of test constructors to add tests to
      52                 :            : //! \param[in] rng RNG ID enum associated with the RNG to be tested
      53                 :            : //! \param[in] proxy Charm++ host proxy to which the tests will call back to
      54                 :            : // *****************************************************************************
      55                 :            : {
      56                 :            :   // Select test stack
      57                 :            :   const auto& stack = g_testStack.TestU01;
      58                 :            : 
      59                 :            :   // Find RNG
      60                 :         12 :   auto gen = stack.generator(rng);
      61                 :            : 
      62                 :            :   static const long THOUSAND = 1000;
      63                 :            :   static const long MILLION = THOUSAND * THOUSAND;
      64                 :            : 
      65                 :            :   // Marsaglia's BirthdaySpacings
      66                 :            :   #ifdef USE_LONGLONG
      67                 :            :   stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
      68                 :            :                                     sres_Poisson, sres_CreatePoisson,
      69                 :            :                                     sres_DeletePoisson,
      70                 :            :                                     long, long, int, long, int, int > > >
      71         [ +  - ]:         12 :            ( proxy, tests, rng, gen, {"Birthday Spacings"},
      72 [ +  - ][ +  + ]:         36 :              1L, 5L * MILLION, 0, 1073741824L, 2, 1 );
         [ +  - ][ -  - ]
                 [ -  - ]
      73                 :            :   #else
      74                 :            :   stack.add< TestU01< TestU01Props< tag::birthdayspacings, CProxy_TestU01Suite,
      75                 :            :                                     sres_poisson, sres_createpoisson,
      76                 :            :                                     sres_deletepoisson,
      77                 :            :                                     long, long, int, long, int, int > > >
      78                 :            :            ( proxy, tests, rng, gen, {"birthday spacings"},
      79                 :            :              10l, million / 2, 0, 67108864l, 2, 1 );
      80                 :            :   #endif
      81                 :            : 
      82                 :            :   // Knuth's Collision
      83                 :            :   stack.add< TestU01< TestU01Props< tag::Collision, CProxy_TestU01Suite,
      84                 :            :                                     sknuth_Res2, sknuth_CreateRes2,
      85                 :            :                                     sknuth_DeleteRes2,
      86                 :            :                                     long, long, int, long, int > > >
      87         [ +  - ]:         12 :            ( proxy, tests, rng, gen, {"Collision"},
      88 [ +  - ][ +  + ]:         36 :              1L, 5L * MILLION, 0, 65536L, 2 );
         [ -  + ][ -  - ]
                 [ -  - ]
      89                 :            : 
      90                 :            :   // Knuth's Gap
      91                 :            :   stack.add< TestU01< TestU01Props< tag::Gap, CProxy_TestU01Suite,
      92                 :            :                                     sres_Chi2, sres_CreateChi2,
      93                 :            :                                     sres_DeleteChi2,
      94                 :            :                                     long, long, int, double, double > > >
      95         [ +  - ]:         12 :            ( proxy, tests, rng, gen, {"Gap"},
      96 [ +  - ][ +  + ]:         36 :              1L, MILLION / 5, 22, 0.0, 0.00390625 );
         [ -  + ][ -  - ]
                 [ -  - ]
      97                 :            : 
      98                 :            :   // Knuth's Simple Poker
      99                 :            :   stack.add< TestU01< TestU01Props< tag::SimplePoker, CProxy_TestU01Suite,
     100                 :            :                                     sres_Chi2, sres_CreateChi2,
     101                 :            :                                     sres_DeleteChi2,
     102                 :            :                                     long, long, int, int, int > > >
     103         [ +  - ]:         12 :            ( proxy, tests, rng, gen, {"Simplified Poker"},
     104 [ +  - ][ +  + ]:         36 :              1L, 2L * MILLION / 5, 24, 64, 64 );
         [ +  - ][ -  - ]
                 [ -  - ]
     105                 :            : 
     106                 :            :   // Knuth's Coupon Collector
     107                 :            :   stack.add< TestU01< TestU01Props< tag::CouponCollector, CProxy_TestU01Suite,
     108                 :            :                                     sres_Chi2, sres_CreateChi2,
     109                 :            :                                     sres_DeleteChi2,
     110                 :            :                                     long, long, int, int > > >
     111         [ +  - ]:         12 :            ( proxy, tests, rng, gen, {"Coupon Collector"},
     112 [ +  - ][ +  + ]:         36 :              1L, MILLION / 2, 26, 16 );
         [ +  - ][ -  - ]
                 [ -  - ]
     113                 :            : 
     114                 :            :   // Knuth's Maximum-of-t
     115                 :            :   stack.add< TestU01< TestU01Props< tag::MaxOft, CProxy_TestU01Suite,
     116                 :            :                                     sknuth_Res1, sknuth_CreateRes1,
     117                 :            :                                     sknuth_DeleteRes1,
     118                 :            :                                     long, long, int, int, int, int, int > > >
     119         [ +  - ]:         12 :            ( proxy, tests, rng, gen, {"Maximum-of-t",
     120                 :            :                                       "Maximum-of-t Anderson-Darling"},
     121                 :         24 :              1L, 2L * MILLION, 0, static_cast<int>(MILLION / 10), 6, gofw_Mean,
     122 [ +  - ][ +  + ]:         48 :              gofw_Mean );
         [ +  + ][ -  - ]
                 [ -  - ]
     123                 :            : 
     124                 :            :   // Weight Distribution
     125                 :            :   stack.add< TestU01< TestU01Props< tag::WeightDistrib, CProxy_TestU01Suite,
     126                 :            :                                     sres_Chi2, sres_CreateChi2,
     127                 :            :                                     sres_DeleteChi2,
     128                 :            :                                     long, long, int, long, double, double > > >
     129         [ +  - ]:         12 :            ( proxy, tests, rng, gen, {"Weight Distribution"},
     130 [ +  - ][ +  + ]:         36 :              1L, MILLION / 5, 27, 256L, 0.0, 0.125 );
         [ +  - ][ -  - ]
                 [ -  - ]
     131                 :            : 
     132                 :            :   // Marsaglia's Matrix Rank
     133                 :            :   stack.add< TestU01< TestU01Props< tag::MatrixRank, CProxy_TestU01Suite,
     134                 :            :                                     sres_Chi2, sres_CreateChi2,
     135                 :            :                                     sres_DeleteChi2,
     136                 :            :                                     long, long, int, int, int, int > > >
     137         [ +  - ]:         12 :            ( proxy, tests, rng, gen, {"Matrix Rank"},
     138 [ +  - ][ +  + ]:         36 :              1L, 20L * THOUSAND, 20, 10, 60, 60 );
         [ -  + ][ -  - ]
                 [ -  - ]
     139                 :            : 
     140                 :            :   // Hamming independence
     141                 :            :   stack.add< TestU01< TestU01Props< tag::HammingIndep, CProxy_TestU01Suite,
     142                 :            :                                     sstring_Res, sstring_CreateRes,
     143                 :            :                                     sstring_DeleteRes,
     144                 :            :                                     long, long, int, int, int, int > > >
     145         [ +  - ]:         12 :            ( proxy, tests, rng, gen, {"Hamming Independence"},
     146 [ +  - ][ +  + ]:         36 :              1L, MILLION/2, 20, 10, 300, 0 );
         [ +  - ][ -  - ]
                 [ -  - ]
     147                 :            : 
     148                 :            :   // Random Walk 1
     149                 :            :   stack.add< TestU01< TestU01Props< tag::RandomWalk1, CProxy_TestU01Suite,
     150                 :            :                                     swalk_Res, swalk_CreateRes,
     151                 :            :                                     swalk_DeleteRes,
     152                 :            :                                     long, long, int, int, long, long > > >
     153         [ +  - ]:         12 :            ( proxy, tests, rng, gen, {"Random Walk 1 Stat H",
     154                 :            :                                       "Random Walk 1 Stat M",
     155                 :            :                                       "Random Walk 1 Stat J",
     156                 :            :                                       "Random Walk 1 Stat R",
     157                 :            :                                       "Random Walk 1 Stat C"},
     158 [ +  - ][ +  + ]:         84 :              1L, static_cast<long>(MILLION), 0, 30, 150L, 150L );
         [ +  - ][ -  - ]
                 [ -  - ]
     159                 :         12 : }

Generated by: LCOV version 1.14