internal void Enumerates_the_source_n_times( [Frozen] IEnumerable <int> source, [Frozen] InfiniteLoopingEnumerator <int> enumerator, int n) { var result = enumerator.AsEnumerable() .Take(source.Count() * n); result.Should().BeEquivalentTo( source.Multiply(times: n)); }
public int GetFirstFrequencyReachedTwice(string frequencyChangesAsString) { var frequencyChanges = Split(frequencyChangesAsString); var parsed = frequencyChanges.Select(ParseFrequencyChange); using (var infiniteLoopingEnumerator = new InfiniteLoopingEnumerator <int>(parsed)) { var looping = infiniteLoopingEnumerator.AsEnumerable(); var reached = GetReachedFrequencies(looping); return(GetFirstReachedTwice(reached)); } }