Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
tpl_ca_hashlife_test.cc File Reference

Phase 10 tests for the Hashlife engine (tpl_ca_hashlife.H). More...

#include <cstdint>
#include <set>
#include <sstream>
#include <string>
#include <utility>
#include <gtest/gtest.h>
#include <tpl_ca_hashlife.H>
Include dependency graph for tpl_ca_hashlife_test.cc:

Go to the source code of this file.

Classes

struct  Rule_Sample
 
class  CAHashlifeBruteForceMatch
 

Functions

 TEST (CAHashlife, EmptyUniverseHasZeroPopulation)
 
 TEST (CAHashlife, SetAndGetSingleCell)
 
 TEST (CAHashlife, SetMultipleCellsKeepsExactSet)
 
 TEST (CAHashlife, ClearResetsUniverse)
 
 TEST (CAHashlife, ReadOutsideRootIsDead)
 
 TEST (CAHashlife, BlockIsAStillLife)
 
 TEST (CAHashlife, BlinkerIsPeriod2)
 
 TEST (CAHashlife, GliderTravelsByOneCellEveryFourSteps)
 
 TEST (CAHashlife, GliderMatchesBruteForceForManySteps)
 
 TEST_P (CAHashlifeBruteForceMatch, MatchesUnboundedReference)
 
 INSTANTIATE_TEST_SUITE_P (CAHashlifeBruteForce, CAHashlifeBruteForceMatch, ::testing::Values(Rule_Sample{ "Conway_blinker_128", Conway_Life, blinker(), 128u }, Rule_Sample{ "Conway_block_128", Conway_Life, block(), 128u }, Rule_Sample{ "Conway_glider_256", Conway_Life, glider(), 256u }, Rule_Sample{ "HighLife_glider_128", HighLife, glider(), 128u }, Rule_Sample{ "Seeds_blinker_32", Seeds, blinker(), 32u }, Rule_Sample{ "Day_Night_block_64", Day_And_Night, block(), 64u }), [](const ::testing::TestParamInfo< Rule_Sample > &i) { return std::string(i.param.name);})
 
 TEST (CAHashlife, AdvanceReturnsAtLeast2ToTheK)
 
 TEST (CAHashlife, RunAtLeastReachesRequestedGeneration)
 
 TEST (CAHashlife, AdvanceTooLargeKThrows)
 
 TEST (CAHashlife, ConstructorRejectsTinyCacheCapacity)
 
 TEST (CAHashlife, RleRoundTripPreservesGlider)
 
 TEST (CAHashlife, RleRoundTripPreservesGosperGun)
 
 TEST (CAHashlife, RleHeaderEncodesRule)
 
 TEST (CAHashlife, RleParseAcceptsStandardConwayDialect)
 
 TEST (CAHashlife, FormatRuleIsRoundTripStable)
 
 TEST (CAHashlife, StatsTrackCanonicalNodes)
 
 TEST (CAHashlife, ChangingRuleInvalidatesResultCache)
 
 TEST (CAHashlife, SmallCacheCapacityForcesPeriodicClears)
 
 TEST (CAHashlife, GosperGunMatchesReferenceAt256Steps)
 
 TEST (CAHashlife, GosperGunPopulationGrowsLinearly)
 
 TEST (CAHashlife, RunZeroIsNoOp)
 
 TEST (CAHashlife, LargeCoordinatesAreSupported)
 
 TEST (CAHashlife, RepeatedSetAliveOnSameCellIsIdempotent)
 
 TEST (CAHashlife, DeepRunHashlifeStaysExactAgainstBruteForce)
 

Detailed Description

Phase 10 tests for the Hashlife engine (tpl_ca_hashlife.H).

Coverage:

  1. Cell-level API: set / clear / read / bbox / population.
  2. Conway's Game of Life small canonical patterns:
    • block (still life), blinker (period 2), glider (moving period 4).
  3. Cross-check against an unbounded brute-force reference for several rules and step counts (powers of 2 up to 1024).
  4. Other outer-totalistic rules: HighLife, Day_And_Night, Seeds.
  5. RLE round-trip on canonical patterns.
  6. Cache invalidation when the rule or universe changes.
  7. Edge cases: empty universe, large coordinates, repeated set/clear.

Definition in file tpl_ca_hashlife_test.cc.

Function Documentation

◆ INSTANTIATE_TEST_SUITE_P()

INSTANTIATE_TEST_SUITE_P ( CAHashlifeBruteForce  ,
CAHashlifeBruteForceMatch  ,
::testing::Values(Rule_Sample{ "Conway_blinker_128", Conway_Life, blinker(), 128u }, Rule_Sample{ "Conway_block_128", Conway_Life, block(), 128u }, Rule_Sample{ "Conway_glider_256", Conway_Life, glider(), 256u }, Rule_Sample{ "HighLife_glider_128", HighLife, glider(), 128u }, Rule_Sample{ "Seeds_blinker_32", Seeds, blinker(), 32u }, Rule_Sample{ "Day_Night_block_64", Day_And_Night, block(), 64u })  ,
[] (const ::testing::TestParamInfo< Rule_Sample > &i) { return std::string(i.param.name);}   
)

◆ TEST() [1/27]

TEST ( CAHashlife  ,
AdvanceReturnsAtLeast2ToTheK   
)

◆ TEST() [2/27]

TEST ( CAHashlife  ,
AdvanceTooLargeKThrows   
)

◆ TEST() [3/27]

◆ TEST() [4/27]

TEST ( CAHashlife  ,
BlockIsAStillLife   
)

◆ TEST() [5/27]

◆ TEST() [6/27]

◆ TEST() [7/27]

TEST ( CAHashlife  ,
ConstructorRejectsTinyCacheCapacity   
)

◆ TEST() [8/27]

TEST ( CAHashlife  ,
DeepRunHashlifeStaysExactAgainstBruteForce   
)

◆ TEST() [9/27]

◆ TEST() [10/27]

◆ TEST() [11/27]

TEST ( CAHashlife  ,
GliderMatchesBruteForceForManySteps   
)

◆ TEST() [12/27]

TEST ( CAHashlife  ,
GliderTravelsByOneCellEveryFourSteps   
)

◆ TEST() [13/27]

TEST ( CAHashlife  ,
GosperGunMatchesReferenceAt256Steps   
)

◆ TEST() [14/27]

TEST ( CAHashlife  ,
GosperGunPopulationGrowsLinearly   
)

◆ TEST() [15/27]

◆ TEST() [16/27]

TEST ( CAHashlife  ,
ReadOutsideRootIsDead   
)

◆ TEST() [17/27]

TEST ( CAHashlife  ,
RepeatedSetAliveOnSameCellIsIdempotent   
)

◆ TEST() [18/27]

TEST ( CAHashlife  ,
RleHeaderEncodesRule   
)

◆ TEST() [19/27]

◆ TEST() [20/27]

◆ TEST() [21/27]

◆ TEST() [22/27]

TEST ( CAHashlife  ,
RunAtLeastReachesRequestedGeneration   
)

◆ TEST() [23/27]

◆ TEST() [24/27]

◆ TEST() [25/27]

◆ TEST() [26/27]

◆ TEST() [27/27]

TEST ( CAHashlife  ,
StatsTrackCanonicalNodes   
)

◆ TEST_P()

TEST_P ( CAHashlifeBruteForceMatch  ,
MatchesUnboundedReference   
)