コード例 #1
0
        /// <summary>
        /// Creates and returns an assignment for a parameter in the coverage group
        /// based on a specific combination that has not yet been covered in a test case.
        /// </summary>
        private bool AssignCoveredParameter(
            IDictionary <string, ParameterAssignment> parameterAssignments,
            TestSpecification testSpecification,
            CoverageGroup coverageGroup,
            IList <string> uncoveredCombination,
            int groupIndex)
        {
            string selectedParameter        = coverageGroup.Parameters[groupIndex];
            string selectedEquivalenceClass = uncoveredCombination[groupIndex];

            if ((selectedParameter == null) || (selectedEquivalenceClass == null))
            {
                return(false);
            }

            InputParameter inputParameter = testSpecification.InputParameters[selectedParameter];

            if (inputParameter == null)
            {
                return(false);
            }

            ParameterAssignment parameterAssignment = new ParameterAssignment();

            parameterAssignment.Set(
                inputParameter.Given,
                inputParameter.Name,
                inputParameter.Text,
                inputParameter.EquivalenceClasses[selectedEquivalenceClass]);

            parameterAssignments.Add(parameterAssignment.Name, parameterAssignment);
            return(true);
        }
コード例 #2
0
        /// <summary>
        /// Creates and returns an assignment for a parameter that is NOT in the coverage group
        /// by randomly selecting one of its equivalence classes.
        /// </summary>
        private bool AssignUncoveredParameter(
            IDictionary <string, ParameterAssignment> parameterAssignments,
            InputParameter inputParameter)
        {
            IList <string> equivalenceClassNames = inputParameter.EquivalenceClasses.Keys.ToList();

            if ((equivalenceClassNames == null) || !equivalenceClassNames.Any())
            {
                return(false);
            }

            int    randomIndex = _random.Next(equivalenceClassNames.Count);
            string selectedEquivalenceClass = equivalenceClassNames[randomIndex];

            if (string.IsNullOrEmpty(selectedEquivalenceClass))
            {
                return(false);
            }

            ParameterAssignment parameterAssignment = new ParameterAssignment();

            parameterAssignment.Set(
                inputParameter.Given,
                inputParameter.Name,
                inputParameter.Text,
                inputParameter.EquivalenceClasses[selectedEquivalenceClass]);

            parameterAssignments.Add(parameterAssignment.Name, parameterAssignment);
            return(true);
        }
コード例 #3
0
        /// <summary>
        /// Evaluates the constraints of a selected parameter, if any, and returns true
        /// or false based on the evaluation.
        /// </summary>
        private bool AssociatedParameterValuation(
            IDictionary <string, ParameterAssignment> parameterAssignments,
            InputParameter inputParameter)
        {
            if ((inputParameter != null) &&
                (inputParameter.ConditionExpression != null) &&
                !inputParameter.ConditionExpression.Match(parameterAssignments))
            {
                return(false);
            }

            return(true);
        }
コード例 #4
0
        /// <summary>
        /// Reads the XML contents of the file into the test specification and returns true if successful.
        /// </summary>
        public bool ReadAsXml(string filenameWithPath)
        {
            string   contentsAsString   = FileHelper.ContentsAsString(filenameWithPath);
            XElement xTestSpecification = XmlHelper.Root(contentsAsString, "TestSpecification");

            FieldsAsAttributes = XmlHelper.ElementOf(xTestSpecification, "FieldsAsAttributes") == "true";
            string given = XmlField(xTestSpecification, "Given");
            string name  = XmlField(xTestSpecification, "Name");
            string text  = XmlField(xTestSpecification, "Text");

            IList <CoverageGroup> coverageGroups = new List <CoverageGroup>();

            foreach (XElement xCoverageGroup in XmlHelper.Children(xTestSpecification, "CoverageGroup"))
            {
                CoverageGroup coverageGroup = new CoverageGroup();
                if (coverageGroup.ReadAsXml(xCoverageGroup))
                {
                    coverageGroups.Add(coverageGroup);
                }
            }

            IDictionary <string, InputParameter> inputParameters = new Dictionary <string, InputParameter>();

            foreach (XElement xInputParameter in XmlHelper.Children(xTestSpecification, "InputParameter"))
            {
                InputParameter inputParameter = new InputParameter();
                if (inputParameter.ReadAsXml(xInputParameter) && !inputParameters.ContainsKey(inputParameter.Name))
                {
                    inputParameters.Add(inputParameter.Name, inputParameter);
                }
            }

            IDictionary <string, ExpectedResult> expectedResults = new Dictionary <string, ExpectedResult>();

            foreach (XElement xExpectedResult in XmlHelper.Children(xTestSpecification, "ExpectedResult"))
            {
                ExpectedResult expectedResult = new ExpectedResult();
                if (expectedResult.ReadAsXml(xExpectedResult) && !expectedResults.ContainsKey(expectedResult.Name))
                {
                    expectedResults.Add(expectedResult.Name, expectedResult);
                }
            }

            bool compositeRead = Set(given, name, text, coverageGroups, inputParameters, expectedResults);

            compositeRead = compositeRead && Normalize();
            compositeRead = compositeRead && UpdateDependencies();
            return(compositeRead);
        }