using System; using System.Linq; using System.Utility; using Chernobyl.Generation.Old; using NUnit.Framework; using ChEnumerable = Chernobyl.Collections.Generic.Enumerable; namespace Chernobyl.Generation.Test.Old { [TestFixture, Description("Tests for the Pattern type.")] public class PatternTests { readonly Random _rand = new Random(); [Test, Description("Ensures CreateParent throws when available patterns is empty.")] public void CreateParentThrowsWhenAvailablePatternsIsEmpty() { Assert.Throws(() => Enumerable.Empty().CreateParent(_rand)); } [Test, Description("Ensures CreateParent returns the one pattern it is given.")] public void CreateParentReturnsTheOnePatternItIsGiven() { var pattern = new BasicPattern(3); var result = ChEnumerable.From(() => pattern).Take(1).CreateParent(_rand); var patterns = result.Data.ToArray(); patterns.Length.IsEqualTo(1, "Length"); result.IsEqualTo(pattern, "patterns"); } [Test, Description("Ensures CreateParent creates correct pattern based on parameters provided.")] public void CreateParentCreatesCorrectPatternBasedOnProvidedParameters() { var available = ChEnumerable.From(index => new BasicPattern(index)).Take(9); var random = new NotRandom(new [] { 3.0, 1.0, 4.0, 2.0, 5.0, 6.0, 0.0, 1.0, 7.0 }.ToList()); var pattern = available.CreateParent(random); var actual = pattern.Data.ToArray(); actual.Length.IsEqualTo(9, "Length"); actual[0].IsEqualTo(3, "first value"); actual[1].IsEqualTo(1, "second value"); actual[2].IsEqualTo(3, "third value"); actual[3].IsEqualTo(4, "fourth value"); actual[4].IsEqualTo(2, "fifth value"); actual[5].IsEqualTo(2, "sixth value"); actual[6].IsEqualTo(3, "seventh value"); actual[7].IsEqualTo(1, "eigth value"); actual[8].IsEqualTo(3, "ninth value"); } } }