public void Mutate_Indexes_RandomIndexes() { var target = new UniformMutation(0, 2); var chromosome = MockRepository.GenerateStub<ChromosomeBase>(3); chromosome.ReplaceGenes(0, new Gene[] { new Gene(1), new Gene(1), new Gene(1) }); chromosome.Expect(c => c.GenerateGene(0)).Return(new Gene(0)); chromosome.Expect(c => c.GenerateGene(2)).Return(new Gene(10)); RandomizationProvider.Current = MockRepository.GenerateMock<IRandomization>(); target.Mutate(chromosome, 1); Assert.AreEqual(0, chromosome.GetGene(0).Value); Assert.AreEqual(1, chromosome.GetGene(1).Value); Assert.AreEqual(10, chromosome.GetGene(2).Value); chromosome.VerifyAllExpectations(); RandomizationProvider.Current.VerifyAllExpectations(); }
public void Mutate_InvalidIndexes_Exception() { var target = new UniformMutation(0, 3); var chromosome = MockRepository.GenerateStub<ChromosomeBase>(3); chromosome.ReplaceGenes(0, new Gene[] { new Gene(1), new Gene(1), new Gene(1) }); chromosome.Expect(c => c.GenerateGene(0)).Return(new Gene(0)); RandomizationProvider.Current = MockRepository.GenerateMock<IRandomization>(); ExceptionAssert.IsThrowing(new MutationException(target, "The chromosome has no gene on index 3. The chromosome genes lenght is 3."), () => { target.Mutate(chromosome, 1); }); chromosome.VerifyAllExpectations(); RandomizationProvider.Current.VerifyAllExpectations(); }