private SpecificationDataset(
            [NotNull] QualitySpecificationElement qualitySpecificationElement,
            [NotNull] DatasetTestParameterValue datasetTestParameterValue)
        {
            QualitySpecificationElement = qualitySpecificationElement;
            _datasetTestParameterValue  = datasetTestParameterValue;

            _allowImage.Tag    = QualityConditionType.Allowed;
            _continueImage.Tag = QualityConditionType.ContinueOnError;
            _stopImage.Tag     = QualityConditionType.StopOnError;

            Dataset dataset = datasetTestParameterValue.DatasetValue;

            if (dataset != null)
            {
                string datasetImageKey = DatasetTypeImageLookup.GetImageKey(dataset);
                DatasetType = _datasetImageList[datasetImageKey];
            }
        }
        public void CanClone()
        {
            string parameterName = "p1Name";

            var dataset = new ErrorLineDataset("LineDataset");

            var testParameterValue =
                new DatasetTestParameterValue(parameterName, typeof(IDummyDatasetType));

            testParameterValue.DatasetValue        = dataset;
            testParameterValue.FilterExpression    = "filterExp";
            testParameterValue.UsedAsReferenceData = true;

            DatasetTestParameterValue
                clone = (DatasetTestParameterValue)testParameterValue.Clone();

            Assert.IsTrue(clone.Equals(testParameterValue));
            Assert.IsTrue(testParameterValue.DataType == clone.DataType);

            Assert.IsTrue(dataset.Equals(clone.DatasetValue));
        }
        public static void AddParameterValue(QualityCondition qualityCondition,
                                             [NotNull] string parameterName,
                                             [CanBeNull] Dataset value,
                                             string filterExpression  = null,
                                             bool usedAsReferenceData = false)
        {
            Assert.ArgumentNotNullOrEmpty(parameterName, nameof(parameterName));

            TestFactory factory =
                TestFactoryUtils.GetTestFactory(qualityCondition.TestDescriptor);

            TestParameter parameter = Assert.NotNull(factory).GetParameter(parameterName);

            TestParameterTypeUtils.AssertValidDataset(parameter, value);
            var parameterValue = new DatasetTestParameterValue(parameter, value,
                                                               filterExpression,
                                                               usedAsReferenceData);

            parameterValue.DataType = parameter.Type;
            qualityCondition.AddParameterValue(parameterValue);
        }
Esempio n. 4
0
        public static DatasetDependencyGraph GetGraph(
            [NotNull] IEnumerable <QualitySpecification> qualitySpecifications,
            bool exportBidirectionalDependenciesAsUndirectedEdges = false,
            bool includeSelfDependencies = false)
        {
            Assert.ArgumentNotNull(qualitySpecifications, nameof(qualitySpecifications));

            QualitySpecification union = Union(qualitySpecifications);

            var result = new DatasetDependencyGraph(GetDatasets(union), union.Name);

            foreach (QualitySpecificationElement element in union.Elements)
            {
                QualityCondition qualityCondition = element.QualityCondition;

                List <DatasetTestParameterValue> datasetTestParameterValues =
                    GetDatasetTestParameterValues(qualityCondition).ToList();

                for (var i = 0; i < datasetTestParameterValues.Count; i++)
                {
                    DatasetTestParameterValue value1 = datasetTestParameterValues[i];

                    if (value1.DatasetValue == null)
                    {
                        continue;
                    }

                    int startIndex = exportBidirectionalDependenciesAsUndirectedEdges
                                                                 ? i + 1 // half matrix
                                                                 : 0;    // full matrix

                    for (int j = startIndex; j < datasetTestParameterValues.Count; j++)
                    {
                        if (i == j)
                        {
                            continue;
                        }

                        DatasetTestParameterValue value2 = datasetTestParameterValues[j];

                        if (value2.DatasetValue == null)
                        {
                            continue;
                        }

                        if (!includeSelfDependencies &&
                            Equals(value1.DatasetValue, value2.DatasetValue))
                        {
                            // dependency between same dataset (but different parameter indexes), ignore
                            continue;
                        }

                        if (value1.UsedAsReferenceData)
                        {
                            // no dependency from value1 to value2
                            continue;
                        }

                        if (value1.TestParameterName == value2.TestParameterName)
                        {
                            if (ExcludeDependenciesWithinMultiValuedParameter(qualityCondition,
                                                                              value1
                                                                              .TestParameterName)
                                )
                            {
                                continue;
                            }
                        }

                        bool directed;
                        if (exportBidirectionalDependenciesAsUndirectedEdges)
                        {
                            // if (value2 is used as reference data: the dependency is directed)
                            directed = value2.UsedAsReferenceData;
                        }
                        else
                        {
                            // always directed (bidirectional dependencies represented as two directed dependencies)
                            directed = true;
                        }

                        result.AddDependency(element,
                                             value1.DatasetValue, value2.DatasetValue,
                                             value1.TestParameterName, value2.TestParameterName,
                                             value1.FilterExpression, value2.FilterExpression,
                                             directed);
                    }
                }
            }

            return(result);
        }