コード例 #1
0
ファイル: IssueUtilsTest.cs プロジェクト: sungaoyong/ProSuite
        public void CanFormatInvolvedTablesWithAlternateKeys()
        {
            var involvedTables =
                new List <InvolvedTable>
            {
                new InvolvedTable(
                    "Table1",
                    new[]
                {
                    new AlternateKeyRowReference("AAA"),
                    new AlternateKeyRowReference("BBB")
                }, "KEY"),
                new InvolvedTable(
                    "Table2",
                    new[]
                {
                    new AlternateKeyRowReference("111"),
                    new AlternateKeyRowReference("222")
                }, "KEY")
            };

            string formatted = IssueUtils.FormatInvolvedTables(involvedTables);

            Console.WriteLine(formatted);

            Assert.AreEqual("[Table1:KEY]AAA||BBB;[Table2:KEY]111||222", formatted);
        }
コード例 #2
0
ファイル: IssueUtilsTest.cs プロジェクト: sungaoyong/ProSuite
        public void CanParseShortestValidTableString()
        {
            IList <InvolvedTable> tables = IssueUtils.ParseInvolvedTables("[T:F]1||2||3;[Y:G]A");

            Assert.AreEqual(2, tables.Count);

            InvolvedTable table1 = tables[0];

            Assert.AreEqual("T", table1.TableName);
            Assert.AreEqual("F", table1.KeyField);
            IList <RowReference> rows1 = table1.RowReferences;

            Assert.AreEqual(3, rows1.Count);
            Assert.AreEqual("1", rows1[0].Key);
            Assert.AreEqual("2", rows1[1].Key);
            Assert.AreEqual("3", rows1[2].Key);

            InvolvedTable table2 = tables[1];

            Assert.AreEqual("Y", table2.TableName);
            Assert.AreEqual("G", table2.KeyField);
            IList <RowReference> rows2 = table2.RowReferences;

            Assert.AreEqual(1, rows2.Count);
            Assert.AreEqual("A", rows2[0].Key);
        }
コード例 #3
0
ファイル: IssueUtilsTest.cs プロジェクト: sungaoyong/ProSuite
        public void CanFormatInvolvedTablesWithOids()
        {
            var involvedTables =
                new List <InvolvedTable>
            {
                new InvolvedTable(
                    "Table1",
                    new[]
                {
                    new OIDRowReference(1),
                    new OIDRowReference(2)
                }),
                new InvolvedTable(
                    "Table2",
                    new[]
                {
                    new OIDRowReference(1000),
                    new OIDRowReference(1001)
                })
            };

            string formatted = IssueUtils.FormatInvolvedTables(involvedTables);

            Console.WriteLine(formatted);

            Assert.AreEqual("[Table1]1||2;[Table2]1000||1001", formatted);
        }
コード例 #4
0
ファイル: IssueUtilsTest.cs プロジェクト: sungaoyong/ProSuite
        public void CanParseInvolvedTablesWithOids()
        {
            IList <InvolvedTable> tables =
                IssueUtils.ParseInvolvedTables("[Table1]1||2;[Table2]1000||1001");

            Assert.AreEqual(2, tables.Count);

            InvolvedTable table1 = tables[0];

            Assert.AreEqual("Table1", table1.TableName);
            Assert.IsNull(table1.KeyField);
            IList <RowReference> rows1 = table1.RowReferences;

            Assert.AreEqual(2, rows1.Count);
            Assert.AreEqual(1, rows1[0].OID);
            Assert.AreEqual(2, rows1[1].OID);

            InvolvedTable table2 = tables[1];

            Assert.AreEqual("Table2", table2.TableName);
            Assert.IsNull(table2.KeyField);
            IList <RowReference> rows2 = table2.RowReferences;

            Assert.AreEqual(2, rows2.Count);
            Assert.AreEqual(1000, rows2[0].OID);
            Assert.AreEqual(1001, rows2[1].OID);
        }
コード例 #5
0
        private IList <InvolvedTable> ParseInvolvedTables(
            [NotNull] string involvedTablesString, Guid qualityConditionGuid)
        {
            IAlternateKeyConverter keyConverter =
                _alternateKeyConverterProvider?.GetConverter(qualityConditionGuid);

            return(IssueUtils.ParseInvolvedTables(involvedTablesString, keyConverter));
        }
コード例 #6
0
        private static void AssertEqualKeys([NotNull] ICollection <InvolvedRow> involvedRows)
        {
            string involvedRowsKey = ExceptionObjectUtils.GetKey(involvedRows);

            string involvedTablesKey = ExceptionObjectUtils.GetKey(
                IssueUtils.GetInvolvedTables(involvedRows));

            Console.WriteLine(@"Involved rows key:   [{0}]", involvedRowsKey);
            Console.WriteLine(@"Involved tables key: [{0}]", involvedTablesKey);

            Assert.AreEqual(involvedRowsKey, involvedTablesKey);
        }
コード例 #7
0
        public void CanGetInvolvedTablesKeyFastEnough()
        {
            var involvedRows = new List <InvolvedRow>
            {
                new InvolvedRow("Table2", 100),
                new InvolvedRow("Table1", 1000),
                new InvolvedRow("Table2", 200)
            };
            IEnumerable <InvolvedTable> involvedTables =
                IssueUtils.GetInvolvedTables(involvedRows);

            AssertFastEnough(() => ExceptionObjectUtils.GetKey(involvedTables), 10000, 0.1);
        }
コード例 #8
0
ファイル: IssueUtilsTest.cs プロジェクト: sungaoyong/ProSuite
        public void CanFormatInvolvedTableWithoutRows()
        {
            var involvedTables =
                new List <InvolvedTable>
            {
                new InvolvedTable("Table1", new RowReference[] { })
            };

            string formatted = IssueUtils.FormatInvolvedTables(involvedTables);

            Console.WriteLine(formatted);

            Assert.AreEqual("[Table1]", formatted);
        }
コード例 #9
0
ファイル: IssueUtilsTest.cs プロジェクト: sungaoyong/ProSuite
        public void CanParseInvolvedTableWithKeyFieldNoIds()
        {
            IList <InvolvedTable> tables = IssueUtils.ParseInvolvedTables("[Table:FieldName]");

            Assert.AreEqual(1, tables.Count);

            InvolvedTable table = tables[0];

            Assert.AreEqual("Table", table.TableName);
            Assert.AreEqual("FieldName", table.KeyField);
            IList <RowReference> rows = table.RowReferences;

            Assert.AreEqual(0, rows.Count);
        }
コード例 #10
0
ファイル: IssueUtilsTest.cs プロジェクト: sungaoyong/ProSuite
        public void CanFormatInvolvedTablesWithoutRows()
        {
            var involvedTables =
                new List <InvolvedTable>
            {
                new InvolvedTable("Table1", new RowReference[] { }),
                new InvolvedTable("Table2", new RowReference[] { }, "KeyField"),
                new InvolvedTable("Table3", new RowReference[] { })
            };

            string formatted = IssueUtils.FormatInvolvedTables(involvedTables);

            Console.WriteLine(formatted);

            // field name is omitted (not used, there are no row references)
            Assert.AreEqual("[Table1];[Table2];[Table3]", formatted);
        }
コード例 #11
0
        protected override bool MatchesCore(ExceptionObject exceptionObject,
                                            QaError qaError)
        {
            double?errorDoubleValue1;
            double?errorDoubleValue2;
            string errorTextValue;

            IssueUtils.GetValues(qaError.Values,
                                 out errorDoubleValue1,
                                 out errorDoubleValue2,
                                 out errorTextValue);

            const double toleranceFactor = 10;
            double       tolerance       = exceptionObject.XYTolerance * toleranceFactor ?? 0;

            return(Matches(exceptionObject.DoubleValue1, errorDoubleValue1, tolerance) &&
                   Matches(exceptionObject.DoubleValue2, errorDoubleValue2, tolerance) &&
                   Matches(exceptionObject.TextValue, errorTextValue));
        }
コード例 #12
0
ファイル: IssueUtilsTest.cs プロジェクト: sungaoyong/ProSuite
        private static void AssertFastEnough([NotNull] string involvedTables,
                                             int count,
                                             double maximumMilliseconds)
        {
            var stopwatch = new Stopwatch();

            stopwatch.Start();
            for (int i = 0; i < count; i++)
            {
                IssueUtils.ParseInvolvedTables(involvedTables);
            }

            stopwatch.Stop();
            long milliseconds = stopwatch.ElapsedMilliseconds;

            double millisecondsPerOperation = (double)milliseconds / count;

            Console.WriteLine(@"Parsing {0}: {1} ms", involvedTables, millisecondsPerOperation);

            Assert.LessOrEqual(millisecondsPerOperation, maximumMilliseconds);
        }
コード例 #13
0
ファイル: IssueUtilsTest.cs プロジェクト: sungaoyong/ProSuite
        private static void ExpectException([NotNull] string involvedTablesString,
                                            [CanBeNull] string expectedMessage)
        {
            try
            {
                IList <InvolvedTable> involvedTables =
                    IssueUtils.ParseInvolvedTables(involvedTablesString);

                foreach (InvolvedTable involvedTable in involvedTables)
                {
                    Console.WriteLine(@"- {0}", involvedTable);
                }

                Assert.Fail("Exception expected for invalid string: {0}", involvedTablesString);
            }
            catch (AssertionException exception)
            {
                Console.WriteLine(exception.Message);
                if (expectedMessage != null)
                {
                    Assert.AreEqual(expectedMessage, exception.Message);
                }
            }
        }
コード例 #14
0
ファイル: IssueUtilsTest.cs プロジェクト: sungaoyong/ProSuite
        public void CanParseEmptyTableString1()
        {
            IList <InvolvedTable> involvedTables = IssueUtils.ParseInvolvedTables(string.Empty);

            Assert.AreEqual(0, involvedTables.Count);
        }