public ICell Clone() { if (!_isAlive) { return(new NullCell()); } var nextGenGerm = _germ.Replicate(); nextGenGerm.Accept(this); return(new InfectedCell(!_germReplicationKillsCell, _selfSignal, _alertSignal, nextGenGerm)); }
internal void VirusMaturesAfterTwoGenerationsSendsMessageAndTellsVisitorItIsMature( [Frozen] EventAggregator eventAggregator, IListenOn <GermGrowthMessage> listener, IGermVistor visitor, LyticVirus sut) { eventAggregator.Subscribe(listener); IGerm matureVirus = sut; for (int gen = 0; gen <= GenerationToMature; gen++) { matureVirus = matureVirus.Replicate(); } VerifyGermIsMature(visitor, matureVirus); VerifyCorrectMessageIsSent(listener, matureVirus); }