public void SiEntreLosEvaluadoresNoSumanLaSecuenciaNecesariaEntoncesNoEsMutante()
        {
            var rangeEvaluatorMock1 = new Mock <IRangeEvaluator>();
            var rangeEvaluatorMock2 = new Mock <IRangeEvaluator>();
            var rangeEvaluatorMock3 = new Mock <IRangeEvaluator>();

            var secuenciasEvaluador1 = 1;
            var secuenciasEvaluador2 = 2;
            var secuenciasEvaluador3 = 3;

            var secuenciaNecesaria = secuenciasEvaluador1 + secuenciasEvaluador2 + secuenciasEvaluador3 + 1;

            rangeEvaluatorMock1.Setup(e => e.GetPatternOccurrences(_humanDna, _secuenciaNecesaria)).Returns(secuenciasEvaluador1);
            rangeEvaluatorMock2.Setup(e => e.GetPatternOccurrences(_humanDna, It.IsAny <int>())).Returns(secuenciasEvaluador2);
            rangeEvaluatorMock3.Setup(e => e.GetPatternOccurrences(_humanDna, It.IsAny <int>())).Returns(secuenciasEvaluador3);

            var mutantConfigurationMock = new Mock <IMutantConfiguration>();

            mutantConfigurationMock.Setup(mc => mc.SequencesNeeded).Returns(secuenciaNecesaria);

            var sut = new DnaEvaluator(new List <IRangeEvaluator>
            {
                rangeEvaluatorMock1.Object,
                rangeEvaluatorMock2.Object,
                rangeEvaluatorMock3.Object,
            }, mutantConfigurationMock.Object);

            var isMutant = sut.IsMutant(_humanDna);

            Assert.False(isMutant);
        }
        public void SiUnEntreMasDeUnEvaluadorSumanLasSecuenciasNecesariasEntoncesEsMutante()
        {
            var rangeEvaluatorMock1 = new Mock <IRangeEvaluator>();
            var rangeEvaluatorMock2 = new Mock <IRangeEvaluator>();
            var rangeEvaluatorMock3 = new Mock <IRangeEvaluator>();

            var secuenciasEvaluador1 = _secuenciaNecesaria / 2;
            var secuenciasRestantes  = _secuenciaNecesaria - secuenciasEvaluador1;
            var secuenciasEvaluador3 = secuenciasRestantes;

            rangeEvaluatorMock1.Setup(e => e.GetPatternOccurrences(_humanDna, _secuenciaNecesaria)).Returns(secuenciasEvaluador1);
            rangeEvaluatorMock2.Setup(e => e.GetPatternOccurrences(_humanDna, It.IsAny <int>())).Returns(0);
            rangeEvaluatorMock3.Setup(e => e.GetPatternOccurrences(_humanDna, It.IsAny <int>())).Returns(secuenciasEvaluador3);

            var sut = new DnaEvaluator(new List <IRangeEvaluator>
            {
                rangeEvaluatorMock1.Object,
                rangeEvaluatorMock2.Object,
                rangeEvaluatorMock3.Object,
            }, _mutantConfigurationMock.Object);

            var isMutant = sut.IsMutant(_humanDna);

            Assert.True(isMutant);
        }
        public void DnaConLongitudMenorQueLaSecuenciaNecesariaNoPuedeSerMutante()
        {
            var sut = new DnaEvaluator(new List <IRangeEvaluator>
            {
                new Mock <IRangeEvaluator>().Object
            }, _mutantConfigurationMock.Object);

            for (var dnaLength = 1; dnaLength < _secuenciaNecesaria; dnaLength++)
            {
                Assert.False(sut.IsMutant(HumanDna.Dummy(dnaLength)));
            }
        }
Beispiel #4
0
        static bool isMutant(string[] dna)
        {
            var humanDna = new HumanDnaBuilder().AddDna(dna).BuildHumanDna();

            var evaluator = new DnaEvaluator(new IRangeEvaluator[]
            {
                new RowEvaluator(),
                new ColumnEvaluator(),
                new MainDiagonalEvaluator(),
                new AntiDiagonalEvaluator()
            }, new MutantConfiguration());

            return(evaluator.IsMutant(humanDna));
        }
        public void SiUnEvaluadorTieneLasSecuenciasNecesariasEntoncesEsMutante()
        {
            var rangeEvaluatorMock1 = new Mock <IRangeEvaluator>();
            var rangeEvaluatorMock2 = new Mock <IRangeEvaluator>();
            var rangeEvaluatorMock3 = new Mock <IRangeEvaluator>();

            rangeEvaluatorMock1.Setup(e => e.GetPatternOccurrences(_humanDna, _secuenciaNecesaria)).Returns(0);
            rangeEvaluatorMock2.Setup(e => e.GetPatternOccurrences(_humanDna, _secuenciaNecesaria)).Returns(_secuenciaNecesaria);
            rangeEvaluatorMock3.Setup(e => e.GetPatternOccurrences(_humanDna, _secuenciaNecesaria)).Returns(0);

            var sut = new DnaEvaluator(new List <IRangeEvaluator>
            {
                rangeEvaluatorMock1.Object,
                rangeEvaluatorMock2.Object,
                rangeEvaluatorMock3.Object,
            }, _mutantConfigurationMock.Object);

            var isMutant = sut.IsMutant(_humanDna);

            Assert.True(isMutant);
        }