LCOV - code coverage report
Current view: top level - UTests - testRandomGen.cpp (source / functions) Hit Total Coverage
Test: Coverage example Lines: 22 22 100.0 %
Date: 2021-12-02 17:21:05 Functions: 4 4 100.0 %

          Line data    Source code
       1             : #include <cassert>
       2             : 
       3             : #include "Random/SpMTGenerator.hpp"
       4             : #include "Random/SpPhiloxGenerator.hpp"
       5             : 
       6             : #include "UTester.hpp"
       7             : 
       8             : class TestRandomGen : public UTester< TestRandomGen > {
       9             :     using Parent = UTester< TestRandomGen >;
      10             : 
      11             :     using TestType = double;
      12             : 
      13             :     template <class RandomGenType>
      14           2 :     void TestBasic(){
      15           2 :         const size_t testSize = 10000;
      16           4 :         std::vector<TestType> buffer(testSize);
      17          10 :         for(const size_t seed : std::vector<size_t>{{0, 1, 34, 534534}}){
      18           8 :             RandomGenType generator(seed);
      19             : 
      20       80008 :             for(size_t idx = 0 ; idx < testSize ; ++idx){
      21       80000 :                 buffer[idx] = generator.getRand01();
      22             :             }
      23             : 
      24             :             {
      25           8 :                 RandomGenType generatorTest(seed);
      26             : 
      27       80008 :                 for(size_t idx = 0 ; idx < testSize ; ++idx){
      28       80000 :                     UASSERTEEQUAL(buffer[idx], generatorTest.getRand01());
      29             :                 }
      30             :             }
      31             : 
      32         800 :             for(size_t idxSkip = 1 ; idxSkip < 100 ; ++idxSkip){
      33         792 :                 RandomGenType generatorTest(seed);
      34             : 
      35     7920792 :                 for(size_t idx = 0 ; idx < testSize ; ++idx){
      36     7920000 :                     if(idx % idxSkip == 0){
      37      414568 :                         UASSERTEEQUAL(buffer[idx], generatorTest.getRand01());
      38      414568 :                         generatorTest.skip(idxSkip-1);
      39             :                     }
      40             :                 }
      41             :             }
      42             :         }
      43           2 :     }
      44             : 
      45           1 :     void SetTests() {
      46           1 :         Parent::AddTest(&TestRandomGen::TestBasic<SpMTGenerator<TestType>>, "Basic test for SpMTGenerator");
      47           1 :         Parent::AddTest(&TestRandomGen::TestBasic<SpPhiloxGenerator<TestType>>, "Basic test for SpPhiloxGenerator");
      48           1 :     }
      49             : };
      50             : 
      51             : // You must do this
      52           1 : TestClass(TestRandomGen)
      53             : 

Generated by: LCOV version 1.14