示例#1
0
        public void CreateInstanceOfAttractRepulseSparkMutator_PassValidParameter()
        {
            ISparkGenerator generator = CreateAttractRepulseSparkGenerator();

            AttractRepulseSparkMutator mutator = new AttractRepulseSparkMutator(generator);

            Assert.NotNull(mutator);
        }
示例#2
0
        public void MutateFirework_PassEachParameterAsNullAndOtherIsCorrect_ArgumentNullExceptionThrown(
            MutableFirework mutableFirework, FireworkExplosion explosion, String expectedParamName)
        {
            ISparkGenerator            generator = CreateAttractRepulseSparkGenerator();
            AttractRepulseSparkMutator mutator   = new AttractRepulseSparkMutator(generator);

            ArgumentException exception = Assert.Throws <ArgumentNullException>(() => mutator.MutateFirework(ref mutableFirework, explosion));

            Assert.Equal(expectedParamName, exception.ParamName);
        }
示例#3
0
        public void MutateFirework_PassValidParameters_ShouldChangeFireworkState()
        {
            Range             range      = new Range(-10, 10);
            IList <Dimension> dimensions = new List <Dimension>();

            dimensions.Add(new Dimension(range));
            dimensions.Add(new Dimension(range));
            dimensions.Add(new Dimension(range));

            IDictionary <Dimension, double> coordinatesBefore = new Dictionary <Dimension, double>();
            IDictionary <Dimension, double> coordinatesAfter  = new Dictionary <Dimension, double>();

            foreach (Dimension dimension in dimensions)
            {
                coordinatesBefore.Add(dimension, 0);
                coordinatesAfter.Add(dimension, 1);
            }

            MutableFirework mutableFirework = new MutableFirework(FireworkType.SpecificSpark, 0, coordinatesBefore);
            MutableFirework mutateFirework  = new MutableFirework(FireworkType.SpecificSpark, 1, coordinatesAfter); //present state mutable firework after mutate

            FireworkExplosion explosion = CreateFireworkExplosion(mutableFirework);
            ISparkGenerator   generator = CreateAttractRepulseSparkGenerator();

            generator.CreateSpark(explosion).Returns(mutateFirework);
            AttractRepulseSparkMutator mutator = Substitute.For <AttractRepulseSparkMutator>(generator);

            mutator.MutateFirework(ref mutableFirework, explosion);

            Assert.NotNull(mutableFirework);
            Assert.Equal(mutableFirework.BirthStepNumber, mutateFirework.BirthStepNumber);
            Assert.Equal(mutableFirework.Quality, mutateFirework.Quality);
            double dimensionValueBefore;
            double dimensionValueAfter;

            foreach (Dimension dimension in dimensions)
            {
                mutableFirework.Coordinates.TryGetValue(dimension, out dimensionValueBefore);
                mutateFirework.Coordinates.TryGetValue(dimension, out dimensionValueAfter);
                Assert.Equal(dimensionValueBefore, dimensionValueAfter);
            }
        }