public void AddNodeMutation_Mutate_AddsNodeAndConnection() { //ARRANGE var genome = CreateGenome(1, 1); genome.Connections.Add(1, new Connection { Id = 1, InNodeId = 1, OutNodeId = 2, IsEnabled = true, Weight = 2.0 }); _nodeInnovationGenerator.GetNextInnovation().Returns(3); _connectionInnovationGenerator.GetNextInnovation().Returns(2, 3); _randomizer.Next(1).Returns(call => call.Arg <int>() - 1); var mutator = new AddNodeMutation(_nodeInnovationGenerator, _connectionInnovationGenerator, _randomizer); //ACT var result = mutator.Mutate(ref genome); //ASSERT Assert.IsTrue(result); Assert.AreEqual(3, genome.Connections.Count); Assert.AreEqual(3, genome.Nodes.Count); Assert.AreEqual(NodeType.Hidden, genome.Nodes[3].NodeType); AssertConnection(genome, 1, false, 1, 2, 2.0); AssertConnection(genome, 2, true, 1, 3, 1.0); AssertConnection(genome, 3, true, 3, 2, 2.0); }
public void AddNodeMutation_Mutate_DidNotAddNodesSinceNoConnections() { //ARRANGE var genome = CreateGenome(1, 1); var mutator = new AddNodeMutation(_nodeInnovationGenerator, _connectionInnovationGenerator, _randomizer); //ACT var result = mutator.Mutate(ref genome); //ASSERT Assert.IsFalse(result); Assert.AreEqual(0, genome.Connections.Count); Assert.AreEqual(2, genome.Nodes.Count); }
public void AddNodeMutation_Mutate_DidNotAddNodesSinceNoEnabledConnections() { //ARRANGE var genome = CreateGenome(1, 1); genome.Connections.Add(1, new Connection { Id = 1, InNodeId = 1, OutNodeId = 2, IsEnabled = false, Weight = 1.0 }); var mutator = new AddNodeMutation(_nodeInnovationGenerator, _connectionInnovationGenerator, _randomizer); //ACT var result = mutator.Mutate(ref genome); //ASSERT Assert.IsFalse(result); Assert.AreEqual(1, genome.Connections.Count); Assert.AreEqual(2, genome.Nodes.Count); }