Esempio n. 1
0
        protected int ReportError([NotNull] string description,
                                  [NotNull] ITable table,
                                  [CanBeNull] IssueCode issueCode,
                                  [CanBeNull] string affectedComponent,
                                  [CanBeNull] IEnumerable <object> values = null)
        {
            var involvedRows = new List <InvolvedRow> {
                CreateInvolvedRowForTable(table)
            };

            const IGeometry geometry = null;
            var             qaError  = new QaError(this, description, involvedRows, geometry,
                                                   issueCode, affectedComponent,
                                                   values: values);

            var args = new QaErrorEventArgs(qaError);

            PostProcessError?.Invoke(this, args);
            if (args.Cancel)
            {
                return(0);
            }

            OnQaError(args);

            return(1);
        }
Esempio n. 2
0
        public bool IsDuplicate(QaError qaError)
        {
            if (!_process || _sortedQaErrors.ContainsKey(qaError))
            {
                qaError.Duplicate = true;
                return(true);
            }

            return(false);
        }
Esempio n. 3
0
        /// <summary>
        /// Checks if two errors describe the same error
        /// </summary>
        /// <param name="error0"></param>
        /// <param name="error1"></param>
        /// <returns></returns>
        public int Compare([NotNull] QaError error0, [NotNull] QaError error1)
        {
            if (!(error0.Test == this && error1.Test == this))
            {
                throw new InvalidOperationException(
                          "Only errors created by this test can be compared");
            }

            return(TestUtils.CompareQaErrors(error0, error1,
                                             compareIndividualInvolvedRows: true));
        }
Esempio n. 4
0
        /// <summary>
        /// Add error to error list, if no identical exists
        /// </summary>
        /// <param name="qaError"></param>
        /// <param name="isKnonwnNotDuplicate"></param>
        /// <returns>true if added, otherwise false</returns>
        public bool Add([NotNull] QaError qaError, bool isKnonwnNotDuplicate = false)
        {
            if (!isKnonwnNotDuplicate)
            {
                if (IsDuplicate(qaError))
                {
                    return(false);
                }
            }

            _sortedQaErrors.Add(qaError, null);
            return(true);
        }
Esempio n. 5
0
        public static int CompareQaErrors([NotNull] QaError error0,
                                          [NotNull] QaError error1,
                                          bool compareIndividualInvolvedRows)
        {
            Assert.ArgumentNotNull(error0, nameof(error0));
            Assert.ArgumentNotNull(error1, nameof(error1));
            Assert.ArgumentCondition(error0.Test == error1.Test,
                                     "Only errors created by the same test can be compared");

            // TODO: if the error has a derived geometry, then don't use the geometry for comparison.
            //       (as it may be different depending on the current verification context (verified datasets) or
            //        after irrelevant geometry changes to related features)
            //       https://issuetracker02.eggits.net/browse/PSM-162

            int involvedRowsCount = error0.InvolvedRows.Count;

            if (involvedRowsCount != error1.InvolvedRows.Count)
            {
                // different number of involved rows
                return(involvedRowsCount - error1.InvolvedRows.Count);
            }

            // check if geometry box is the same
            int envelopeDifference = error0.CompareEnvelope(error1);

            if (envelopeDifference != 0)
            {
                return(envelopeDifference);
            }

            // TODO compare error code / error attributes instead
            int descriptionDifference = Comparer <string> .Default.Compare(
                error0.Description,
                error1.Description);

            if (descriptionDifference != 0)
            {
                return(descriptionDifference);
            }

            if (involvedRowsCount > 0 && compareIndividualInvolvedRows)
            {
                // check if involved rows are equal
                var list0 = new List <InvolvedRow>(error0.InvolvedRows);
                var list1 = new List <InvolvedRow>(error1.InvolvedRows);

                // TODO reuse instance?
                var rowCompare = new InvolvedRowComparer();

                list0.Sort(rowCompare);
                list1.Sort(rowCompare);

                for (var involvedRowIndex = 0;
                     involvedRowIndex < involvedRowsCount;
                     involvedRowIndex++)
                {
                    int involvedRowDifference = rowCompare.Compare(
                        list0[involvedRowIndex],
                        list1[involvedRowIndex]);

                    if (involvedRowDifference != 0)
                    {
                        return(involvedRowDifference);
                    }
                }
            }

            // no difference detected
            return(0);
        }
Esempio n. 6
0
 public void Remove(QaError args)
 {
     _sortedQaErrors.Remove(args);
 }
Esempio n. 7
0
 public bool Exists(QaError args)
 {
     return(_sortedQaErrors.ContainsKey(args));
 }
Esempio n. 8
0
 private void OnQaError([NotNull] QaErrorEventArgs args)
 {
     QaError?.Invoke(this, args);
 }
Esempio n. 9
0
 public int CompareEnvelope(QaError other)
 {
     return(_errorGeometry.CompareEnvelope(other._errorGeometry));
 }
Esempio n. 10
0
        /// <summary>
        /// Initializes a new instance of the <see cref="QaErrorEventArgs"/> class.
        /// </summary>
        /// <param name="qaError">The error description.</param>
        public QaErrorEventArgs([NotNull] QaError qaError)
        {
            Assert.ArgumentNotNull(qaError, nameof(qaError));

            QaError = qaError;
        }