Introduce Catch's own RNG based on the PCG family of RNGs

In the future, we will also want to introduce our own
`uniform_int_distribution` and `uniform_real_distribution` to get
repeatable test runs across different platforms.
This commit is contained in:
Martin Hořeňovský
2019-10-06 21:47:54 +02:00
parent 319cb9e1da
commit 535da5c513
14 changed files with 565 additions and 23 deletions

View File

@@ -2529,6 +2529,41 @@ Nor would this
</Expression>
<OverallResult success="true"/>
</TestCase>
<TestCase name="Comparison ops" tags="[rng]" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
SimplePcg32{} == SimplePcg32{}
</Original>
<Expanded>
{?} == {?}
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
SimplePcg32{ 0 } != SimplePcg32{}
</Original>
<Expanded>
{?} != {?}
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE_FALSE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
!(SimplePcg32{ 1 } == SimplePcg32{ 2 })
</Original>
<Expanded>
!({?} == {?})
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE_FALSE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
!(SimplePcg32{ 1 } != SimplePcg32{ 1 })
</Original>
<Expanded>
!({?} != {?})
</Expanded>
</Expression>
<OverallResult success="true"/>
</TestCase>
<TestCase name="Comparison with explicitly convertible types" tags="[Approx]" filename="projects/<exe-name>/UsageTests/Approx.tests.cpp" >
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Approx.tests.cpp" >
<Original>
@@ -6728,6 +6763,165 @@ Nor would this
</Expression>
<OverallResult success="true"/>
</TestCase>
<TestCase name="Our PCG implementation provides expected results for known seeds" tags="[rng]" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Section name="Default seeded" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
4242248763 (0x<hex digits>)
==
4242248763 (0x<hex digits>)
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
1867888929 (0x<hex digits>)
==
1867888929 (0x<hex digits>)
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
1276619030 (0x<hex digits>)
==
1276619030 (0x<hex digits>)
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
1911218783 (0x<hex digits>)
==
1911218783 (0x<hex digits>)
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
1827115164 (0x<hex digits>)
==
1827115164 (0x<hex digits>)
</Expanded>
</Expression>
<OverallResults successes="5" failures="0" expectedFailures="0"/>
</Section>
<Section name="Specific seed" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
1472234645 (0x<hex digits>)
==
1472234645 (0x<hex digits>)
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
868832940 (0x<hex digits>)
==
868832940 (0x<hex digits>)
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
570883446 (0x<hex digits>)
==
570883446 (0x<hex digits>)
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
889299803 (0x<hex digits>)
==
889299803 (0x<hex digits>)
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
4261393167 (0x<hex digits>)
==
4261393167 (0x<hex digits>)
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
1472234645 (0x<hex digits>)
==
1472234645 (0x<hex digits>)
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
868832940 (0x<hex digits>)
==
868832940 (0x<hex digits>)
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
570883446 (0x<hex digits>)
==
570883446 (0x<hex digits>)
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
889299803 (0x<hex digits>)
==
889299803 (0x<hex digits>)
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
<Original>
rng() == 0x<hex digits>
</Original>
<Expanded>
4261393167 (0x<hex digits>)
==
4261393167 (0x<hex digits>)
</Expanded>
</Expression>
<OverallResults successes="10" failures="0" expectedFailures="0"/>
</Section>
<OverallResult success="true"/>
</TestCase>
<TestCase name="Output from all sections is reported" tags="[.][failing][messages]" filename="projects/<exe-name>/UsageTests/Message.tests.cpp" >
<Section name="one" filename="projects/<exe-name>/UsageTests/Message.tests.cpp" >
<Failure filename="projects/<exe-name>/UsageTests/Message.tests.cpp" >
@@ -14923,7 +15117,7 @@ loose text artifact
</Section>
<OverallResult success="true"/>
</TestCase>
<OverallResults successes="1418" failures="149" expectedFailures="21"/>
<OverallResults successes="1437" failures="149" expectedFailures="21"/>
</Group>
<OverallResults successes="1418" failures="148" expectedFailures="21"/>
<OverallResults successes="1437" failures="148" expectedFailures="21"/>
</Catch>