public IEnumerable <IEnumerable <int> > Generate(int numberOfLevels, int maxNumber, bool subsequentOddEven) { var result = new List <List <int> >(); var oddEven = subsequentOddEven ? (_randomiser.RandomNextBool() ? Randomiser.OddEven.Even : Randomiser.OddEven.Odd) : Randomiser.OddEven.Any; for (int i = 0; i < numberOfLevels; i++) { var row = new List <int>(); for (int j = 0; j <= i; j++) { var value = _randomiser.RandomNextInt(maxNumber, oddEven); row.Add(value); } result.Add(row); oddEven = _randomiser.SwitchOddEven(oddEven); } return(result); }
public void RandomNextIntReturnsExpectedValues(bool?oddEvenBoth, int maxNumber) { var count = 100; var oddEven = oddEvenBoth == null ? OddEven.Any : (oddEvenBoth.Value ? OddEven.Odd: OddEven.Even); var resultList = new List <int>(); while (count > 0) { var result = _sut.RandomNextInt(maxNumber, oddEven); count--; } Assert.All(resultList, (x) => Assert.True(x <= maxNumber)); if (oddEven == OddEven.Even) { Assert.All(resultList, (x) => Assert.True(x % 2 == 0)); } else if (oddEven == OddEven.Odd) { Assert.All(resultList, (x) => Assert.True(x % 2 == 1)); } }