public void Operate_OneMutationDesired_ZeroMutationChance_ReturnsOriginalDv()
        {
            var mutator = new MutationReplaceWithRandomNumber(
                0, 1);

            var newDv = mutator.Operate(testDv);

            Assert.Equal(testDv, newDv);
        }
        public void Operate_ManyMutationsDesired_ReturnsMutatedDv()
        {
            var mutator = new MutationReplaceWithRandomNumber(
                1, 10);

            var newDv = mutator.Operate(testDv);

            Assert.NotEqual(testDv, newDv);
            Assert.Equal(testDv.Count, newDv.Count);
            Assert.True(newDv.Where((v, i) => v == testDv.ElementAt(i)).Count()
                        <= testDv.Count - 1);
        }
        public void Operate_OneMutationDesired_ReturnsMutatedDv()
        {
            var mutator = new MutationReplaceWithRandomNumber(
                1, 1);

            var newDv = mutator.Operate(testDv);

            // TODO: This can fail if it generates the same value it already had!
            Assert.NotEqual(testDv, newDv);
            Assert.Equal(testDv.Count, newDv.Count);
            Assert.Equal(testDv.Count - 1,
                         newDv.Where((v, i) => v == testDv.ElementAt(i)).Count());
        }