private IQuantityAnalysis GetQuantityAnalysis()
        {
            int minMutantTest = 2;
            int maxMutantTest = int.MaxValue;

            /*
             * Para la prueba de integración necesito que devuelva objetos reales, por lo que voy a tener que crear instancias
             * de las clases de resultado
             */
            Mock <IQuantitySearch> quantitySearchMock             = new Mock <IQuantitySearch>();
            QuantityAnalysisResult positiveQuantityAnalysisResult = new QuantityAnalysisResult(0, 1, true);
            QuantityAnalysisResult negativeQuantityAnalysisResult = new QuantityAnalysisResult(0, 1, false);
            Mock <IUnityContainer> containerMock = new Mock <IUnityContainer>();

            containerMock.Setup(m => m.Resolve(typeof(IAnalysisResult), "quantityAnalysisResult", It.IsAny <ParameterOverride>(), It.IsAny <ParameterOverride>(), new ParameterOverride("result", true))).Returns(positiveQuantityAnalysisResult);
            containerMock.Setup(m => m.Resolve(typeof(IAnalysisResult), "quantityAnalysisResult", It.IsAny <ParameterOverride>(), It.IsAny <ParameterOverride>(), new ParameterOverride("result", false))).Returns(negativeQuantityAnalysisResult);

            IQuantityAnalysisResultFactory quantityAnalysisResultFactory = new QuantityAnalysisResultFactory(containerMock.Object);

            List <IQuantitySearch> quantitySearchList = new List <IQuantitySearch>()
            {
                new AllDirectionsSequenceQuantitySearch("AAAA"),
                new AllDirectionsSequenceQuantitySearch("TTTT"),
                new AllDirectionsSequenceQuantitySearch("CCCC"),
                new AllDirectionsSequenceQuantitySearch("GGGG")
            };

            IQuantityAnalysis quantityAnalysis = new QuantityAnalysis(minMutantTest, maxMutantTest, quantityAnalysisResultFactory, quantitySearchList);

            return(quantityAnalysis);
        }
        public void ShouldReturnObjectWhenIsConfiguredProperly()
        {
            QuantityAnalysisResult validQuantityAnalysisResult   = new QuantityAnalysisResult(10, 20, false);
            QuantityAnalysisResult invalidQuantityAnalysisResult = new QuantityAnalysisResult(0, 0, true);
            Mock <IUnityContainer> containerMock = new Mock <IUnityContainer>();

            containerMock.Setup(m => m.Resolve(typeof(IAnalysisResult), "quantityAnalysisResult", It.IsAny <ParameterOverride>(), It.IsAny <ParameterOverride>(), It.IsAny <ParameterOverride>())).Returns(invalidQuantityAnalysisResult);
            containerMock.Setup(m => m.Resolve(typeof(IAnalysisResult), "quantityAnalysisResult", new ParameterOverride("min", 10), new ParameterOverride("max", 20), new ParameterOverride("result", false))).Returns(validQuantityAnalysisResult);

            QuantityAnalysisResultFactory quantityAnalysisResultFactory = new QuantityAnalysisResultFactory(containerMock.Object);
            QuantityAnalysisResult        quantityAnalysisResult        = (QuantityAnalysisResult)quantityAnalysisResultFactory.CreateInstance(10, 20, false);

            Assert.AreEqual(quantityAnalysisResult.Min, 10);
            Assert.AreEqual(quantityAnalysisResult.Max, 20);
            Assert.AreEqual(quantityAnalysisResult.Result, false);
        }
Exemplo n.º 3
0
        public void MeliIntegrationTestShouldWorksWhenConfigurationIsCreatedFromJSON()
        {
            string json = @"
                {
                  'configuration': [
                    {
                      'type': 'analysisset',
                      'name': 'mutant',
                      'analyses': [
                        {
                          'type': 'quantity',
                          'min': 2,
                          'search': [
                            {
                              'type': 'alldirectionssequencequantity',
                              'sequence': 'AAAA'
                            },
                            {
                              'type': 'alldirectionssequencequantity',
                              'sequence': 'TTTT'
                            },
                            {
                              'type': 'alldirectionssequencequantity',
                              'sequence': 'CCCC'
                            },
                            {
                              'type': 'alldirectionssequencequantity',
                              'sequence': 'GGGG'
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
            ";

            /// Creo el Factory Principal, que va a crear la lista de analysis set
            IAnalysisSetFactory analysisSetFactory = new AnalysisSetFactory();

            Mock <IQuantitySearch> quantitySearchMock = new Mock <IQuantitySearch>();
            Mock <IAnalysisResult> resultMock         = new Mock <IAnalysisResult>();
            Mock <IUnityContainer> containerMock      = new Mock <IUnityContainer>();

            containerMock.Setup(m => m.Resolve(typeof(IAnalysisResult), "quantityAnalysisResult", It.IsAny <ParameterOverride>(), It.IsAny <ParameterOverride>(), It.IsAny <ParameterOverride>())).Returns(resultMock.Object);
            containerMock.Setup(m => m.Resolve(typeof(IQuantitySearch), "allDirectionsSequenceQuantitySearch", It.IsAny <ParameterOverride>())).Returns(quantitySearchMock.Object);

            /// Creo el Factory de resultados de analisis de cantidad
            IQuantityAnalysisResultFactory quantityAnalysisResultFactory = new QuantityAnalysisResultFactory(containerMock.Object);
            IQuantityAnalysisFactory       quantityAnalysisFactory       = new QuantityAnalysisFactory(quantityAnalysisResultFactory);

            /// Creo la lista de busquedas por cantidad disponibles
            Dictionary <string, IQuantitySearchJSONFactory> availableSearchFactories = new Dictionary <string, IQuantitySearchJSONFactory>();

            /// Agrego la busqueda por todas las direcciones
            AllDirectionsSequenceQuantitySearchFactory allDirectionsSequenceQuantitySearchFactory = new AllDirectionsSequenceQuantitySearchFactory(containerMock.Object);
            IQuantitySearchJSONFactory allDirectionsQuantityJSONFactory = new QuantitySearchJSONFactory(allDirectionsSequenceQuantitySearchFactory, AllDirectionsSequenceQuantitySearch.ClassType);

            availableSearchFactories.Add(AllDirectionsSequenceQuantitySearch.ClassType, allDirectionsQuantityJSONFactory);

            /// Creo el Factory de busquedas por cantidad, con las busquedas por cantidad disponibles
            IQuantitySearchTypesFactory quantitySearchTypesFactory  = new QuantitySearchTypesFactory(availableSearchFactories);
            QuantityAnalysisJSONFactory quantityAnalysisJSONFactory = new QuantityAnalysisJSONFactory(quantityAnalysisFactory, quantitySearchTypesFactory);

            Dictionary <string, IAnalysisJSONFactory> availableAnalysisFactories = new Dictionary <string, IAnalysisJSONFactory>();

            availableAnalysisFactories.Add(QuantityAnalysis.ClassKey, quantityAnalysisJSONFactory);

            IAnalysisTypesFactory analysisTypesFactory = new AnalysisTypesFactory(availableAnalysisFactories);

            AnalysisSetJSONFactory factory = new AnalysisSetJSONFactory(analysisSetFactory, analysisTypesFactory);

            IEnumerable <IAnalysisSet> analysisSets = factory.CreateInstance(json);

            Assert.IsTrue(analysisSets != null);

            foreach (var analysisSet in analysisSets)
            {
                {
                    IDNAConfiguration dnaConfiguration = this.GetDNAConfiguration();
                    string[]          components       = new string[] { "ATGCGA", "CAGTGC", "TTATGT", "AGAAGG", "CCCCTA", "TCACTG" };
                    IDNA dna = new DNA(dnaConfiguration, components);
                    List <IAnalysisResult> results = new List <IAnalysisResult>(analysisSet.Analyze(dna));
                    Assert.AreEqual(resultMock.Object, results[0]);
                }
            }
        }