private QualityCondition GetDisplayableCondition()
        {
            // if there is a life reference to the correct version of the
            // quality condition, directly return that reference
            if (_qualityCondition != null)
            {
                if (_qualityCondition.Id == _qualityConditionId &&
                    _qualityCondition.Version == _qualityConditionVersion)
                {
                    return(_qualityCondition);
                }

                if (string.IsNullOrEmpty(_qualityConditionName))
                {
                    // for backwards compatiblity

                    // _qualityConditionName == null --> _qualityConditionId/ -Version invalid
                    // assume that quality condition is still valid
                    return(_qualityCondition);
                }
            }

            // either the qualiy condition was deleted, or it was changed since the verification
            var result = new QualityCondition(assignUuids: true);

            if (string.IsNullOrEmpty(_qualityConditionName))
            {
                result.Name        = "<unknown>";
                result.Description =
                    "unknown, deleted quality condition without stored " +
                    "information in quality verification";
                return(result);
            }

            result.Name = _qualityConditionName;

            foreach (TestParameterValue testParameterValue
                     in TestParameterStringUtils.ParseTestParameterValues(
                         _qualityConditionParamValues))
            {
                result.AddParameterValue(testParameterValue);
            }

            result.TestDescriptor = TestDescriptor.CreateDisplayableTestDescriptor(
                _testType, _constructorId);

            string description = _qualityCondition != null &&
                                 _qualityCondition.Id == _qualityConditionId
                                                     ? "changed test without stored description information" +
                                 " (Version " + _qualityConditionVersion + " )"
                                                     : "unknown, deleted or changed test without stored description information";

            result.Description = description + Environment.NewLine +
                                 result.TestDescriptor.Description;

            result.AllowErrorsOverride = _allowErrors;
            result.StopOnErrorOverride = _stopOnError;

            return(result);
        }
        private void CopyProperties([NotNull] QualityCondition target)
        {
            Assert.ArgumentNotNull(target, nameof(target));

            target._name           = Name;
            target._testDescriptor = TestDescriptor;
            target._description    = Description;
            target._notes          = Notes;
            target._url            = Url;

            target._allowErrorsOverride            = AllowErrorsOverride;
            target._stopOnErrorOverride            = StopOnErrorOverride;
            target._reportIndividualErrorsOverride = ReportIndividualErrorsOverride;
            target.CanGroupIssuesByDescription     = CanGroupIssuesByDescription;

            target._neverFilterTableRowsUsingRelatedGeometry =
                NeverFilterTableRowsUsingRelatedGeometry;
            target._neverStoreRelatedGeometryForTableRowIssues =
                NeverStoreRelatedGeometryForTableRowIssues;

            foreach (TestParameterValue testParameterValue in ParameterValues)
            {
                target.AddParameterValue(testParameterValue.Clone());
            }

            target._category = _category;
        }
        public QualityVerification(
            int qualitySpecificationId,
            string qualitySpecificationName,
            string qualitySpecificationDescription,
            string userDisplayName,
            [NotNull] IEnumerable <QualityConditionVerification> conditionVerifications)
        {
            _specificationId          = qualitySpecificationId;
            _specificationName        = qualitySpecificationName;
            _specificationDescription = qualitySpecificationDescription;

            _operator = userDisplayName;

            var datasets = new HashSet <Dataset>();

            foreach (QualityConditionVerification conditionVerification in conditionVerifications)
            {
                _conditionVerifications.Add(conditionVerification);

                QualityCondition condition = conditionVerification.QualityCondition;

                Assert.NotNull(condition);

                foreach (Dataset dataset in condition.GetDatasetParameterValues())
                {
                    datasets.Add(dataset);
                }
            }

            foreach (Dataset dataset in datasets)
            {
                _verificationDatasets.Add(new QualityVerificationDataset(dataset));
            }
        }
Exemple #4
0
        public void DisableNoErrorElements([CanBeNull] IList <Dataset> uneditedDatasets)
        {
            if (uneditedDatasets == null || uneditedDatasets.Count == 0)
            {
                return;
            }

            foreach (QualitySpecificationElement element in Elements)
            {
                QualityCondition condition = element.QualityCondition;
                var enable = false;
                foreach (TestParameterValue testParameterValue in condition.ParameterValues)
                {
                    if (!(testParameterValue is DatasetTestParameterValue))
                    {
                        continue;
                    }

                    Dataset ds = ((DatasetTestParameterValue)testParameterValue).DatasetValue;
                    if (ds != null && uneditedDatasets.Contains(ds))
                    {
                        continue;
                    }

                    enable = true;
                    break;
                }

                if (!enable)
                {
                    element.Enabled = false;
                }
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="QualityConditionVerification"/> class.
        /// </summary>
        /// <param name="element">The specification element that was verified.</param>
        public QualityConditionVerification([NotNull] QualitySpecificationElement element)
        {
            Assert.ArgumentNotNull(element, nameof(element));

            QualityCondition qualityCondition = element.QualityCondition;

            _qualityCondition            = qualityCondition;
            _qualityConditionId          = qualityCondition.Id;
            _qualityConditionVersion     = qualityCondition.Version;
            _qualityConditionName        = qualityCondition.Name;
            _qualityConditionParamValues =
                qualityCondition.GetParameterValuesString(_maxLengthParamValues);

            TestDescriptor  testDescriptor = qualityCondition.TestDescriptor;
            ClassDescriptor testClass      = testDescriptor.TestClass;

            if (testClass != null)
            {
                _testType      = testClass.TypeName;
                _constructorId = testDescriptor.TestConstructorId;
            }
            else
            {
                ClassDescriptor factoryDescriptor = testDescriptor.TestFactoryDescriptor;
                Assert.NotNull(factoryDescriptor,
                               "both TestClass and TestFactory descriptors are null");

                _testType      = factoryDescriptor.TypeName;
                _constructorId = -1;
            }

            _allowErrors = element.AllowErrors;
            _stopOnError = element.StopOnError;
        }
Exemple #6
0
        public bool RemoveElement([NotNull] QualityCondition qualityCondition)
        {
            Assert.ArgumentNotNull(qualityCondition, nameof(qualityCondition));

            QualitySpecificationElement element = GetElement(qualityCondition);

            return(element != null && _elements.Remove(element));
        }
        public QualityCondition CreateCopy()
        {
            var copy = new QualityCondition(assignUuids: true);

            CopyProperties(copy);

            return(copy);
        }
Exemple #8
0
 public QualitySpecificationElement AddElement(
     [NotNull] QualityCondition qualityCondition,
     bool?stopOnErrorOverride, bool?allowErrorsOverride, bool disabled)
 {
     // add to end of list
     return(AddElement(qualityCondition,
                       stopOnErrorOverride, allowErrorsOverride, _elements.Count,
                       disabled));
 }
Exemple #9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="QualitySpecificationElement"/> class.
        /// </summary>
        /// <param name="condition">The quality condition.</param>
        /// <param name="stopOnErrorOverride">The stop on error override.</param>
        /// <param name="allowErrorsOverride">The allow errors override.</param>
        /// <param name="disabled">if set to <c>true</c> the element will be disabled.</param>
        public QualitySpecificationElement([NotNull] QualityCondition condition,
                                           bool?stopOnErrorOverride = null,
                                           bool?allowErrorsOverride = null,
                                           bool disabled            = false)
        {
            Assert.ArgumentNotNull(condition, nameof(condition));

            _qualityCondition    = condition;
            _stopOnErrorOverride = stopOnErrorOverride;
            _allowErrorsOverride = allowErrorsOverride;
            Enabled = !disabled;
        }
Exemple #10
0
        public QualitySpecificationElement AddElement(
            [NotNull] QualityCondition qualityCondition, bool?stopOnErrorOverride,
            bool?allowErrorsOverride, int insertIndex, bool disabled = false)
        {
            Assert.ArgumentNotNull(qualityCondition, nameof(qualityCondition));

            var element = new QualitySpecificationElement(
                qualityCondition, stopOnErrorOverride, allowErrorsOverride, disabled);

            _elements.Insert(insertIndex, element);

            return(element);
        }
Exemple #11
0
        private int IndexOf([NotNull] QualityCondition condition)
        {
            for (var i = 0; i < _elements.Count; i++)
            {
                QualitySpecificationElement element = _elements[i];
                if (element.QualityCondition.Equals(condition))
                {
                    return(i);
                }
            }

            return(-1);
        }
        internal QualityCondition Clone()
        {
            var clone = new QualityCondition(assignUuids: false)
            {
                Uuid        = Uuid,
                VersionUuid = VersionUuid,
                Version     = Version,
                _cloneId    = Id
            };

            CopyProperties(clone);

            return(clone);
        }
Exemple #13
0
        public bool Contains([NotNull] QualityCondition qualityCondition)
        {
            Assert.ArgumentNotNull(qualityCondition, nameof(qualityCondition));

            foreach (QualitySpecificationElement element in _elements)
            {
                if (element.QualityCondition.Equals(qualityCondition))
                {
                    return(true);
                }
            }

            return(false);
        }
Exemple #14
0
        public QualitySpecificationElement GetElement(
            [NotNull] QualityCondition qualityCondition)
        {
            Assert.ArgumentNotNull(qualityCondition, nameof(qualityCondition));

            foreach (QualitySpecificationElement element in _elements)
            {
                if (qualityCondition.Equals(element.QualityCondition))
                {
                    return(element);
                }
            }

            return(null);
        }
Exemple #15
0
        protected static bool IsQualityConditionApplicable(
            [NotNull] QualityCondition condition,
            [NotNull] HashSet <Dataset> verifiedDatasets)
        {
            Assert.ArgumentNotNull(condition, nameof(condition));
            Assert.ArgumentNotNull(verifiedDatasets, nameof(verifiedDatasets));

            IList <TestParameterValue> deleted = condition.GetDeletedParameterValues();

            if (deleted.Count > 0)
            {
                // there are deleted parameter values
                return(false);
            }

            return(condition.IsApplicableFor(verifiedDatasets,
                                             onlyIfNotUsedAsReferenceData: true));
        }
        public double LoadTime([NotNull] QualityVerification verification)
        {
            double           result    = 0;
            QualityCondition condition = DisplayableCondition;

            foreach (Dataset dataset in condition.GetDatasetParameterValues())
            {
                QualityVerificationDataset verificationDataset =
                    verification.GetVerificationDataset(dataset);

                if (verificationDataset == null)
                {
                    continue;
                }

                result += verificationDataset.LoadTime;
            }

            return(result);
        }
        public void UnlinkQualityCondition([NotNull] QualityCondition qualityCondition)
        {
            Assert.ArgumentNotNull(qualityCondition, nameof(qualityCondition));

            foreach (
                QualityConditionVerification conditionVerification in _conditionVerifications)
            {
                if (conditionVerification.QualityCondition != null)
                {
                    if (Equals(conditionVerification.QualityCondition, qualityCondition))
                    {
                        conditionVerification.ClearQualityCondition();
                    }
                }

                if (conditionVerification.StopCondition != null)
                {
                    if (Equals(conditionVerification.StopCondition, qualityCondition))
                    {
                        conditionVerification.StopCondition = null;
                    }
                }
            }
        }
        public void UpdateParameterValuesFrom([NotNull] QualityCondition updateCondition,
                                              bool updateIsOriginal = false)
        {
            var updateValues = new Dictionary <string, List <TestParameterValue> >();

            foreach (TestParameterValue updateParameterValue in updateCondition.ParameterValues)
            {
                List <TestParameterValue> values;
                if (!updateValues.TryGetValue(updateParameterValue.TestParameterName, out values))
                {
                    values = new List <TestParameterValue>();
                    updateValues.Add(updateParameterValue.TestParameterName, values);
                }

                values.Add(updateParameterValue);
            }

            var hasUpdates = false;

            var toRemoves = new List <TestParameterValue>();

            foreach (TestParameterValue parameterValue in ParameterValues)
            {
                List <TestParameterValue> updates;
                if (!updateValues.TryGetValue(parameterValue.TestParameterName, out updates) ||
                    updates.Count == 0)
                {
                    toRemoves.Add(parameterValue);
                    hasUpdates = true;
                    continue;
                }

                TestParameterValue update = updates[0];
                updates.RemoveAt(0);

                if (parameterValue.UpdateFrom(update))
                {
                    hasUpdates = true;
                }
            }

            foreach (TestParameterValue toRemove in toRemoves)
            {
                RemoveParameterValue(toRemove);
            }

            foreach (List <TestParameterValue> missingValues in updateValues.Values)
            {
                foreach (TestParameterValue missingValue in missingValues)
                {
                    AddParameterValue(missingValue);
                    hasUpdates = true;
                }
            }

            if (hasUpdates)
            {
                Updated = true;
            }

            if (updateIsOriginal)
            {
                Updated = false;
            }
        }
Exemple #19
0
        public QualitySpecification Union([NotNull] QualitySpecification other,
                                          out int equal)
        {
            Assert.ArgumentNotNull(other, nameof(other));

            var result = new QualitySpecification(Name + "*" + other.Name)
            {
                _isUnion = true
            };

            equal = 0;
            var minOther = 0;

            // index des minimalen other elements, das noch nicht geprueft wurde, ob es in die union gehoert
            foreach (QualitySpecificationElement thisElement in _elements)
            {
                bool stopOnError = thisElement.StopOnError;
                bool allowErrors = thisElement.AllowErrors;
                bool enabled     = thisElement.Enabled;

                int otherIndex = other.IndexOf(thisElement.QualityCondition);
                if (otherIndex >= 0)
                {
                    QualitySpecificationElement otherElement;
                    for (int idxOther = minOther; idxOther < otherIndex; idxOther++)
                    {
                        otherElement = other._elements[idxOther];
                        QualityCondition otherCond = otherElement.QualityCondition;

                        if (IndexOf(otherCond) >= 0 || result.IndexOf(otherCond) >= 0)
                        {
                            continue;
                        }

                        result.AddElement(otherElement.QualityCondition,
                                          otherElement.StopOnError,
                                          otherElement.AllowErrors,
                                          !otherElement.Enabled);
                        equal |= 2;
                        // == equal = equal | 2; Beispiel equal = 1 --> nachher equal = 1 | 2 = 3
                    }

                    minOther = otherIndex;

                    otherElement = other._elements[otherIndex];
                    if (stopOnError != otherElement.StopOnError)
                    {
                        equal |= stopOnError
                                                                 ? 1
                                                                 : 2;
                        stopOnError = true;
                    }

                    if (allowErrors != otherElement.AllowErrors)
                    {
                        equal |= allowErrors
                                                                 ? 1
                                                                 : 2;
                        allowErrors = true;
                    }
                }
                else
                {
                    equal |= 1;
                }

                result.AddElement(thisElement.QualityCondition, stopOnError,
                                  allowErrors, !enabled);
            }

            foreach (QualitySpecificationElement otherElement in other._elements)
            {
                int unionIndex = result.IndexOf(otherElement.QualityCondition);
                if (unionIndex >= 0)
                {
                    continue;
                }

                equal |= 2;
                result.AddElement(otherElement.QualityCondition,
                                  otherElement.StopOnError,
                                  otherElement.AllowErrors,
                                  !otherElement.Enabled);
            }

            return(result);
        }
 public QualityConditionVerification GetConditionVerification(
     [NotNull] QualityCondition qualityCondition)
 {
     return(_conditionVerifications.FirstOrDefault(
                verification => verification.QualityCondition == qualityCondition));
 }
 public void ClearQualityCondition()
 {
     _qualityCondition     = null;
     _displayableCondition = null;
 }
Exemple #22
0
 public QualitySpecificationElement AddElement(
     [NotNull] QualityCondition qualityCondition, int insertIndex)
 {
     return(AddElement(qualityCondition, null, null, insertIndex));
 }