示例#1
0
        public void Matches_MdxQueryWithNullComparedToSqlWithValue_NonMatching()
        {
            //Buiding object used during test
            var sql           = "SELECT 'CY 2010',  0 ";
            var expectedQuery = new NBi.Core.Query.Query(sql, ConnectionStringReader.GetSqlClient());
            var resolver      = new FakeQueryResultSetResolver(expectedQuery, serviceLocator);
            var builder       = new ResultSetServiceBuilder();

            builder.Setup(resolver);
            var ctr = new EqualToConstraint(builder.GetService());

            ctr.Using(
                new SettingsOrdinalResultSet(
                    SettingsOrdinalResultSet.KeysChoice.AllExpectLast,
                    SettingsOrdinalResultSet.ValuesChoice.Last,
                    NumericAbsoluteTolerance.None
                    )
                );

            var mdx   = "SELECT [Measures].[Amount] ON 0, [Date].[Calendar].[Calendar Year].&[2010] ON 1 FROM [Adventure Works]";
            var query = new NBi.Core.Query.Query(mdx, ConnectionStringReader.GetAdomd());

            var actualBuilder = new ResultSetServiceBuilder();

            actualBuilder.Setup(new FakeQueryResultSetResolver(query, serviceLocator));
            var actual = actualBuilder.GetService();

            //Assertion
            Assert.That(ctr.Matches(actual), Is.False);
        }
        public void Matches_MdxQueryAndResulSetWithCorrectSettings_Matching()
        {
            //Buiding object used during test
            var rs   = new ResultSet();
            var objs = new List <object[]>();

            objs.Add(new object[] { "CY 2005", "1874469.00" });
            objs.Add(new object[] { "CY 2006", "4511243.0" });
            objs.Add(new object[] { "CY 2007", "4709851" });
            objs.Add(new object[] { "CY 2008", "1513940" });
            rs.Load(objs);

            var ctr = new EqualToConstraint(rs);

            ctr.Using(new SettingsResultSetComparisonByIndex(
                          SettingsResultSetComparisonByIndex.KeysChoice.First,
                          SettingsResultSetComparisonByIndex.ValuesChoice.Last,
                          new NumericAbsoluteTolerance(500, SideTolerance.Both)
                          )
                      );

            var query = "SELECT [Measures].[Amount] ON 0, NON EMPTY([Date].[Calendar].[Calendar Year]) ON 1 FROM [Adventure Works]";
            var cmd   = new AdomdCommand(query, new AdomdConnection(ConnectionStringReader.GetAdomd()));

            //Call the method to test
            var actual = ctr.Matches(cmd);

            //Assertion
            Assert.That(actual, Is.True);
        }
示例#3
0
        public void Matches_TwoQueriesOfThreeSecondsSequential_SlowerThanSixSeconds()
        {
            var query1 = new NBi.Core.Query.Query("WAITFOR DELAY '00:00:03';SELECT 1;", ConnectionStringReader.GetSqlClient());
            var query2 = new NBi.Core.Query.Query("WAITFOR DELAY '00:00:03';SELECT 1;", ConnectionStringReader.GetSqlClient());

            var loader  = new FakeQueryResultSetResolver(query2, serviceLocator);
            var builder = new ResultSetServiceBuilder();

            builder.Setup(loader);
            BaseResultSetComparisonConstraint ctr = new EqualToConstraint(builder.GetService());

            ctr = ctr.Sequential();

            //Method under test
            var chrono        = DateTime.Now;
            var actualBuilder = new ResultSetServiceBuilder();

            actualBuilder.Setup(new FakeQueryResultSetResolver(query1, serviceLocator));
            var actual = actualBuilder.GetService();

            Assert.That(actual, ctr);
            var elapsed = DateTime.Now.Subtract(chrono);

            Assert.That(elapsed.Seconds, Is.GreaterThanOrEqualTo(6));
        }
示例#4
0
        public void Matches_MdxQueryWithNullComparedToSqlWithNull_Matching()
        {
            //Buiding object used during test
            var expectedQuery = "SELECT 'CY 2010',  NULL ";

            var expectedCmd = new SqlCommand(expectedQuery, new SqlConnection(ConnectionStringReader.GetSqlClient()));
            var resolver    = new FakeQueryResultSetLoader(expectedCmd);
            var builder     = new ResultSetServiceBuilder();

            builder.Setup(resolver);
            var ctr = new EqualToConstraint(builder.GetService());

            ctr.Using(
                new SettingsIndexResultSet(
                    SettingsIndexResultSet.KeysChoice.AllExpectLast,
                    SettingsIndexResultSet.ValuesChoice.Last,
                    NumericAbsoluteTolerance.None
                    )
                );

            var query = "SELECT  [Measures].[Amount] ON 0, [Date].[Calendar].[Calendar Year].&[2010] ON 1 FROM [Adventure Works]";
            var cmd   = new AdomdCommand(query, new AdomdConnection(ConnectionStringReader.GetAdomd()));

            var actualBuilder = new ResultSetServiceBuilder();

            actualBuilder.Setup(new FakeQueryResultSetLoader(cmd));
            var actual = actualBuilder.GetService();

            //Assertion
            Assert.That(ctr.Matches(actual));
        }
示例#5
0
        public void Matches_AnyResultSets_EngineCalledOnceResultSetBuilderTwice()
        {
            var rs  = new ResultSetCsvReader().Parse("a;b;c");
            var cmd = new SqlCommand();

            var rsbMock = new Mock <ResultSetBuilder>();

            rsbMock.Setup(engine => engine.Build(It.IsAny <object>()))
            .Returns(rs);
            var rsb = rsbMock.Object;

            var rscMock = new Mock <IResultSetComparer>();

            rscMock.Setup(engine => engine.Compare(It.IsAny <ResultSet>(), It.IsAny <ResultSet>()))
            .Returns(new ResultSetCompareResult()
            {
                Difference = ResultSetDifferenceType.None
            });
            var rsc = rscMock.Object;

            var equalToConstraint = new EqualToConstraint(rs)
            {
                Engine = rsc, ResultSetBuilder = rsb
            };

            equalToConstraint.ResultSetBuilder = rsb;

            //Method under test
            equalToConstraint.Matches(cmd);

            //Test conclusion
            //Test conclusion
            rscMock.Verify(engine => engine.Compare(It.IsAny <ResultSet>(), It.IsAny <ResultSet>()), Times.Once());
            rsbMock.Verify(engine => engine.Build(It.IsAny <object>()), Times.Exactly(2));
        }
示例#6
0
        public void Matches_IDbCommandAsActualAndPathAsExpectation_ResulSetBuildersCreateResultSetsUsingActualAndExpectationProvided()
        {
            var rsActual = new ResultSet();

            rsActual.Load("a;b;1");
            var rsExpect = new ResultSet();

            rsExpect.Load("x;y;2");
            var cmd = new SqlCommand();

            var rsbMock = new Mock <IResultSetBuilder>();

            rsbMock.Setup(engine => engine.Build(cmd))
            .Returns(rsActual);
            rsbMock.Setup(engine => engine.Build("my path for expectation"))
            .Returns(rsExpect);
            var rsb = rsbMock.Object;

            var equalToConstraint = new EqualToConstraint("my path for expectation")
            {
                ResultSetBuilder = rsb
            };

            //Method under test
            equalToConstraint.Matches(cmd);

            //Test conclusion
            //Test conclusion
            rsbMock.Verify(engine => engine.Build(cmd), Times.Once());
            rsbMock.Verify(engine => engine.Build("my path for expectation"), Times.Once());
        }
        public void Matches_MdxQueryWithNullComparedToSqlWithValue_NonMatching()
        {
            //Buiding object used during test
            var expectedQuery = "SELECT 'CY 2010',  0 ";

            var expectedCmd = new SqlCommand(expectedQuery, new SqlConnection(ConnectionStringReader.GetSqlClient()));

            var ctr = new EqualToConstraint(expectedCmd);

            ctr.Using(
                new SettingsResultSetComparisonByIndex(
                    SettingsResultSetComparisonByIndex.KeysChoice.AllExpectLast,
                    SettingsResultSetComparisonByIndex.ValuesChoice.Last,
                    NumericAbsoluteTolerance.None
                    )
                );

            var query = "SELECT  [Measures].[Amount] ON 0, [Date].[Calendar].[Calendar Year].&[2010] ON 1 FROM [Adventure Works]";
            var cmd   = new AdomdCommand(query, new AdomdConnection(ConnectionStringReader.GetAdomd()));

            //Call the method to test
            var actual = ctr.Matches(cmd);

            //Assertion
            Assert.That(actual, Is.False);
        }
示例#8
0
        public void Matches_TwoDifferentResultSets_ReturnFalse()
        {
            var rsActual = new ResultSet();

            rsActual.Load("a;b;1");
            var rsExpect = new ResultSet();

            rsExpect.Load("a;X;1");

            var cmd = new SqlCommand();

            var rsbMock = new Mock <IResultSetBuilder>();

            rsbMock.Setup(engine => engine.Build(It.IsAny <IDbCommand>()))
            .Returns(rsActual);
            rsbMock.Setup(engine => engine.Build(rsExpect))
            .Returns(rsExpect);
            var rsb = rsbMock.Object;

            var equalToConstraint = new EqualToConstraint(rsExpect)
            {
                ResultSetBuilder = rsb
            };

            //Method under test
            var res = equalToConstraint.Matches(cmd);

            //Test conclusion
            rsbMock.Verify(engine => engine.Build(rsExpect), Times.Once());
            Assert.That(res, Is.False);
        }
示例#9
0
        public void Matches_MdxQueryAndSlighltyDifferentQueryWithCorrectSettings_NotMatching()
        {
            //Buiding object used during test
            var mdx = "WITH MEMBER [Measures].NewAmount AS [Measures].[Amount]+1";

            mdx += " SELECT [Measures].NewAmount ON 0, NON EMPTY([Date].[Calendar].[Calendar Year]) ON 1 FROM [Adventure Works]";
            var expectedQuery = new NBi.Core.Query.Query(mdx, ConnectionStringReader.GetAdomd());
            var resolver      = new FakeQueryResultSetResolver(expectedQuery, serviceLocator);
            var builder       = new ResultSetServiceBuilder();

            builder.Setup(resolver);
            var ctr = new EqualToConstraint(builder.GetService());

            ctr.Using(new SettingsOrdinalResultSet(
                          SettingsOrdinalResultSet.KeysChoice.First,
                          SettingsOrdinalResultSet.ValuesChoice.Last,
                          NumericAbsoluteTolerance.None)
                      );

            var mdx2  = "SELECT [Measures].[Amount] ON 0, ([Date].[Calendar].[Calendar Year]-[Date].[Calendar].[Calendar Year].&[2010]) ON 1  FROM [Adventure Works]";
            var query = new NBi.Core.Query.Query(mdx2, ConnectionStringReader.GetAdomd());

            var actualBuilder = new ResultSetServiceBuilder();

            actualBuilder.Setup(new FakeQueryResultSetResolver(query, serviceLocator));
            var actual = actualBuilder.GetService();

            //Assertion
            Assert.That(ctr.Matches(actual), Is.False);
        }
示例#10
0
        public void Matches_TwoQueriesOfThreeSecondsParallel_FasterThanSixSeconds()
        {
            var command = new SqlCommand();

            command.Connection  = new SqlConnection(ConnectionStringReader.GetSqlClient());
            command.CommandText = "WAITFOR DELAY '00:00:03';SELECT 1;";

            var command2 = new SqlCommand();

            command2.Connection  = new SqlConnection(ConnectionStringReader.GetSqlClient());
            command2.CommandText = "WAITFOR DELAY '00:00:03';SELECT 1;";


            BaseResultSetComparisonConstraint ctr = new EqualToConstraint(command2);

            ctr = ctr.Parallel();

            //Method under test
            var chrono = DateTime.Now;

            Assert.That(command, ctr);
            var elapsed = DateTime.Now.Subtract(chrono);

            Assert.That(elapsed.Seconds, Is.LessThan(6));
        }
示例#11
0
        public void Matches_MdxQueryAndResulSetWithoutKeyValuesInfo_Matching()
        {
            //Buiding object used during test
            var objs = new List <object[]>()
            {
                new object[] { "CY 2005", "1874469.00" },
                new object[] { "CY 2006", "4511243.0" },
                new object[] { "CY 2007", "4709851" },
                new object[] { "CY 2008", "1513940" }
            };

            var resolver = new ObjectsResultSetResolver(new ObjectsResultSetResolverArgs(objs.ToArray()));
            var builder  = new ResultSetServiceBuilder();

            builder.Setup(resolver);
            var ctr = new EqualToConstraint(builder.GetService());

            var mdx   = "SELECT [Measures].[Amount] ON 0, NON EMPTY([Date].[Calendar].[Calendar Year]) ON 1 FROM [Adventure Works]";
            var query = new NBi.Core.Query.Query(mdx, ConnectionStringReader.GetAdomd());


            var actualBuilder = new ResultSetServiceBuilder();

            actualBuilder.Setup(new FakeQueryResultSetResolver(query, serviceLocator));
            var actual = actualBuilder.GetService();

            //Assertion
            Assert.That(ctr.Matches(actual));
        }
示例#12
0
        public void Matches_MdxQueryAndSlighltyDifferentQueryWithCorrectSettings_NotMatching()
        {
            //Buiding object used during test
            var expectedQuery = "WITH MEMBER [Measures].NewAmount AS [Measures].[Amount]+1";

            expectedQuery += " SELECT [Measures].NewAmount ON 0, NON EMPTY([Date].[Calendar].[Calendar Year]) ON 1 FROM [Adventure Works]";
            var expectedCmd = new AdomdCommand(expectedQuery, new AdomdConnection(ConnectionStringReader.GetAdomd()));

            var ctr = new EqualToConstraint(expectedCmd);

            ctr.Using(new SettingsResultSetComparisonByIndex(
                          SettingsResultSetComparisonByIndex.KeysChoice.First,
                          SettingsResultSetComparisonByIndex.ValuesChoice.Last,
                          NumericAbsoluteTolerance.None)
                      );

            var query = "SELECT [Measures].[Amount] ON 0, ([Date].[Calendar].[Calendar Year]-[Date].[Calendar].[Calendar Year].&[2010]) ON 1  FROM [Adventure Works]";
            var cmd   = new AdomdCommand(query, new AdomdConnection(ConnectionStringReader.GetAdomd()));

            //Call the method to test
            var actual = ctr.Matches(cmd);

            //Assertion
            Assert.That(actual, Is.False);
        }
示例#13
0
        public void Matches_SqlQueryWithDateComparedToStringAnotherHour_NonMatching()
        {
            //Buiding object used during test
            var expectedQuery = "SELECT 'CY 2010',  CAST('2010-01-01' AS DATE)";

            var expectedCmd = new SqlCommand(expectedQuery, new SqlConnection(ConnectionStringReader.GetSqlClient()));

            var columns = new List <IColumnDefinition>();

            columns.Add(new Column()
            {
                Index = 1, Role = ColumnRole.Value, Type = ColumnType.DateTime
            });

            var ctr = new EqualToConstraint(expectedCmd);

            ctr.Using(
                new SettingsResultSetComparisonByIndex(
                    SettingsResultSetComparisonByIndex.KeysChoice.AllExpectLast,
                    SettingsResultSetComparisonByIndex.ValuesChoice.Last,
                    columns
                    )
                );

            var query = "SELECT 'CY 2010',  '1/01/2010 01:00:00'";
            var cmd   = new SqlCommand(query, new SqlConnection(ConnectionStringReader.GetSqlClient()));

            //Call the method to test
            var actual = ctr.Matches(cmd);

            //Assertion
            Assert.That(actual, Is.False);
        }
示例#14
0
        public void Matches_MdxQueryAndSlighltyDifferentQueryWithCorrectSettingsAndTolerance_Matching()
        {
            //Buiding object used during test
            var expectedQuery = "WITH MEMBER [Measures].NewAmount AS [Measures].[Amount]+1";

            expectedQuery += " SELECT [Measures].NewAmount ON 0, ([Date].[Calendar].[Calendar Year].[CY 2005]:[Date].[Calendar].[Calendar Year].[CY 2008]) ON 1  FROM [Adventure Works]";
            var expectedCmd = new AdomdCommand(expectedQuery, new AdomdConnection(ConnectionStringReader.GetAdomd()));

            var ctr = new EqualToConstraint(expectedCmd);

            ctr.Using(new SettingsResultSetComparisonByIndex(
                          SettingsResultSetComparisonByIndex.KeysChoice.First,
                          SettingsResultSetComparisonByIndex.ValuesChoice.Last,
                          new List <IColumnDefinition>()
            {
                new Column()
                {
                    Index     = 1,
                    Role      = ColumnRole.Value,
                    Type      = ColumnType.Numeric,
                    Tolerance = "10"
                }
            }
                          )
                      );

            var query = "SELECT  [Measures].[Amount] ON 0, NON EMPTY([Date].[Calendar].[Calendar Year]) ON 1 FROM [Adventure Works]";
            var cmd   = new AdomdCommand(query, new AdomdConnection(ConnectionStringReader.GetAdomd()));

            //Call the method to test
            var actual = ctr.Matches(cmd);

            //Assertion
            Assert.That(actual, Is.True);
        }
示例#15
0
        public void Matches_TwoQueriesOfThreeSecondsParallel_FasterThanSixSeconds()
        {
            var command = new SqlCommand
            {
                Connection  = new SqlConnection(ConnectionStringReader.GetSqlClient()),
                CommandText = "WAITFOR DELAY '00:00:03';SELECT 1;"
            };

            var command2 = new SqlCommand
            {
                Connection  = new SqlConnection(ConnectionStringReader.GetSqlClient()),
                CommandText = "WAITFOR DELAY '00:00:03';SELECT 1;"
            };

            var loader  = new FakeQueryResultSetLoader(command2);
            var builder = new ResultSetServiceBuilder();

            builder.Setup(loader);
            BaseResultSetComparisonConstraint ctr = new EqualToConstraint(builder.GetService());

            ctr = ctr.Parallel();

            //Method under test
            var chrono        = DateTime.Now;
            var actualBuilder = new ResultSetServiceBuilder();

            actualBuilder.Setup(new FakeQueryResultSetLoader(command));
            var actual = actualBuilder.GetService();

            Assert.That(actual, ctr);
            var elapsed = DateTime.Now.Subtract(chrono);

            Assert.That(elapsed.Seconds, Is.LessThan(6));
        }
示例#16
0
        public void Matches_AnyIDbCommandAsActualAndAnyPathAsExpectation_EngineCompareTheTwoResultSetsPreviouslyCreated()
        {
            var rsActual = new ResultSetCsvReader().Parse("a;b;c");
            var rsExpect = new ResultSetCsvReader().Parse("x;y;z");
            var cmd      = new SqlCommand();

            var rsbStub = new Mock <IResultSetBuilder>();

            rsbStub.Setup(engine => engine.Build(It.IsAny <IDbCommand>()))
            .Returns(rsActual);
            rsbStub.Setup(engine => engine.Build(It.IsAny <string>()))
            .Returns(rsExpect);

            var rsbFake = rsbStub.Object;

            var rscMock = new Mock <IResultSetComparer>();

            rscMock.Setup(engine => engine.Compare(rsActual, rsExpect))
            .Returns(ResultSetCompareResult.NotMatching);
            var rsc = rscMock.Object;

            var equalToConstraint = new EqualToConstraint("my path for expectation")
            {
                ResultSetBuilder = rsbFake, Engine = rsc
            };

            //Method under test
            equalToConstraint.Matches(cmd);

            //Test conclusion
            //Test conclusion
            rscMock.Verify(engine => engine.Compare(rsActual, rsExpect), Times.Once());
        }
示例#17
0
        public void Matches_TwoQueriesOfThreeSecondsSequential_SlowerThanSixSeconds()
        {
            var command = new SqlCommand();

            command.Connection  = new SqlConnection(ConnectionStringReader.GetSqlClient());
            command.CommandText = "WAITFOR DELAY '00:00:03';SELECT 1;";

            var command2 = new SqlCommand();

            command2.Connection  = new SqlConnection(ConnectionStringReader.GetSqlClient());
            command2.CommandText = "WAITFOR DELAY '00:00:03';SELECT 1;";


            var ctr = new EqualToConstraint(command2);

            ctr = ctr.Sequential();

            //Method under test
            var chrono = DateTime.Now;

            Assert.That(command, ctr);
            var elapsed = DateTime.Now.Subtract(chrono);

            Assert.That(elapsed.Seconds, Is.GreaterThanOrEqualTo(6));
        }
示例#18
0
        public void Matches_MdxQueryAndDecimalResulSetWithCorrectSettings_Matching()
        {
            //Buiding object used during test
            var objs = new List <object[]>()
            {
                new object[] { "CY 2005", 1874469.00 },
                new object[] { "CY 2006", 4511243.0 },
                new object[] { "CY 2007", 4709851 },
                new object[] { "CY 2008", 1513940 }
            };
            var resolver = new ObjectsResultSetResolver(new ObjectsResultSetResolverArgs(objs.ToArray()));
            var builder  = new ResultSetServiceBuilder();

            builder.Setup(resolver);
            var ctr = new EqualToConstraint(builder.GetService());

            ctr.Using(new SettingsOrdinalResultSet(
                          SettingsOrdinalResultSet.KeysChoice.First,
                          SettingsOrdinalResultSet.ValuesChoice.Last,
                          NumericAbsoluteTolerance.None)
                      );

            var mdx           = "SELECT [Measures].[Amount] ON 0, NON EMPTY([Date].[Calendar].[Calendar Year]) ON 1 FROM [Adventure Works]";
            var query         = new NBi.Core.Query.Query(mdx, ConnectionStringReader.GetAdomd());
            var actualBuilder = new ResultSetServiceBuilder();

            actualBuilder.Setup(new FakeQueryResultSetResolver(query, serviceLocator));
            var actual = actualBuilder.GetService();

            //Assertion
            Assert.That(ctr.Matches(actual));
        }
示例#19
0
        public void Matches_TwoIdenticalResultSets_ReturnTrue()
        {
            var rs = new ResultSet();

            rs.Load("a;X;1");

            var cmd = new SqlCommand();

            var rsbMock = new Mock <IResultSetBuilder>();

            rsbMock.Setup(engine => engine.Build(It.IsAny <IDbCommand>()))
            .Returns(rs);
            rsbMock.Setup(engine => engine.Build(rs))
            .Returns(rs);
            var rsb = rsbMock.Object;

            var equalToConstraint = new EqualToConstraint(rs)
            {
                ResultSetBuilder = rsb
            };

            //Method under test
            var res = equalToConstraint.Matches(cmd);

            //Test conclusion
            rsbMock.Verify(engine => engine.Build(rs), Times.Once());
            Assert.That(res, Is.True);
        }
示例#20
0
        public void Matches_MdxQueryAndResulSetCsvFile_Matching()
        {
            //Buiding object used during test
            var filename = DiskOnFile.CreatePhysicalFile("NonEmptyAmountByYear.csv", "NBi.Testing.Integration.NUnit.Resources.NonEmptyAmountByYear.csv");

            var ctr = new EqualToConstraint(filename);

            var query = "SELECT [Measures].[Amount] ON 0, NON EMPTY([Date].[Calendar].[Calendar Year]) ON 1 FROM [Adventure Works]";
            var cmd   = new AdomdCommand(query, new AdomdConnection(ConnectionStringReader.GetAdomd()));

            //Call the method to test
            var actual = ctr.Matches(cmd);

            //Assertion
            Assert.That(actual, Is.True);
        }
示例#21
0
        public void Matches_MdxQueryAndSqlQueryWithCorrectSettings_Matching()
        {
            //Buiding object used during test
            var expectedQuery = "SELECT 'CY 2005',  1874469 UNION ";

            expectedQuery += " SELECT 'CY 2006', 4511243 UNION ";
            expectedQuery += " SELECT 'CY 2007', 4709851 UNION ";
            expectedQuery += " SELECT 'CY 2008', 1513940  ";

            var expectedCmd = new SqlCommand(expectedQuery, new SqlConnection(ConnectionStringReader.GetSqlClient()));
            var resolver    = new FakeQueryResultSetLoader(expectedCmd);
            var builder     = new ResultSetServiceBuilder();

            builder.Setup(resolver);
            var ctr = new EqualToConstraint(builder.GetService());

            ctr.Using(
                new SettingsIndexResultSet(
                    SettingsIndexResultSet.KeysChoice.AllExpectLast,
                    SettingsIndexResultSet.ValuesChoice.Last,
                    new List <IColumnDefinition>()
            {
                new Column()
                {
                    Index     = 1,
                    Role      = ColumnRole.Value,
                    Type      = ColumnType.Numeric,
                    Tolerance = "5"
                }
            }
                    )
                );

            var query = "SELECT  [Measures].[Amount] ON 0, NON EMPTY([Date].[Calendar].[Calendar Year]) ON 1 FROM [Adventure Works]";
            var cmd   = new AdomdCommand(query, new AdomdConnection(ConnectionStringReader.GetAdomd()));


            var actualBuilder = new ResultSetServiceBuilder();

            actualBuilder.Setup(new FakeQueryResultSetLoader(cmd));
            var actual = actualBuilder.GetService();

            //Assertion
            Assert.That(ctr.Matches(actual));
        }
示例#22
0
        public void Matches_AnyServices_TheirResultsAreCompared()
        {
            var expectedRs = new ResultSet();

            expectedRs.Load("a;b;c");

            var actualRs = new ResultSet();

            actualRs.Load("x;y;z");

            var expectedServiceMock = new Mock <IResultSetService>();

            expectedServiceMock.Setup(s => s.Execute())
            .Returns(expectedRs);
            var expectedService = expectedServiceMock.Object;

            var actualServiceMock = new Mock <IResultSetService>();

            actualServiceMock.Setup(s => s.Execute())
            .Returns(actualRs);
            var actualService = actualServiceMock.Object;

            var rscMock = new Mock <IEquivaler>();

            rscMock.Setup(engine => engine.Compare(It.IsAny <ResultSet>(), It.IsAny <ResultSet>()))
            .Returns(new ResultResultSet()
            {
                Difference = ResultSetDifferenceType.Content
            });
            var rsc = rscMock.Object;

            var equalToConstraint = new EqualToConstraint(expectedService)
            {
                Engine = rsc
            };

            //Method under test
            equalToConstraint.Matches(actualService);

            //Test conclusion
            rscMock.Verify(engine => engine.Compare(actualRs, expectedRs), Times.Once());
        }
示例#23
0
        public void Matches_TwoDifferentResultSets_ReturnFalse()
        {
            var expectedRs = new ResultSet();

            expectedRs.Load("a;b;c");

            var actualRs = new ResultSet();

            actualRs.Load("x;y;z");

            var expectedServiceMock = new Mock <IResultSetService>();

            expectedServiceMock.Setup(s => s.Execute())
            .Returns(expectedRs);
            var expectedService = expectedServiceMock.Object;

            var actualServiceMock = new Mock <IResultSetService>();

            actualServiceMock.Setup(s => s.Execute())
            .Returns(actualRs);
            var actualService = actualServiceMock.Object;

            var rscMock = new Mock <IEquivaler>();

            rscMock.Setup(engine => engine.Compare(actualRs, expectedRs))
            .Returns(new ResultResultSet()
            {
                Difference = ResultSetDifferenceType.Content
            });
            var rsc = rscMock.Object;

            var equalToConstraint = new EqualToConstraint(expectedService)
            {
                Engine = rsc
            };

            //Method under test
            var result = equalToConstraint.Matches(actualService);

            //Test conclusion
            Assert.That(result, Is.False);
        }
示例#24
0
        public void Matches_MdxQueryAndSlighltyDifferentQueryWithCorrectSettingsAndTolerance_Matching()
        {
            //Buiding object used during test
            var mdx = "WITH MEMBER [Measures].NewAmount AS [Measures].[Amount]+1";

            mdx += " SELECT [Measures].NewAmount ON 0, ([Date].[Calendar].[Calendar Year].[CY 2005]:[Date].[Calendar].[Calendar Year].[CY 2008]) ON 1  FROM [Adventure Works]";
            var expectedQuery = new NBi.Core.Query.Query(mdx, ConnectionStringReader.GetAdomd());
            var resolver      = new FakeQueryResultSetResolver(expectedQuery, serviceLocator);
            var builder       = new ResultSetServiceBuilder();

            builder.Setup(resolver);
            var ctr = new EqualToConstraint(builder.GetService());

            ctr.Using(new SettingsOrdinalResultSet(
                          SettingsOrdinalResultSet.KeysChoice.First,
                          SettingsOrdinalResultSet.ValuesChoice.Last,
                          new List <IColumnDefinition>()
            {
                new Column()
                {
                    Identifier = new ColumnOrdinalIdentifier(1),
                    Role       = ColumnRole.Value,
                    Type       = ColumnType.Numeric,
                    Tolerance  = "10"
                }
            }
                          )
                      );

            var query = "SELECT  [Measures].[Amount] ON 0, NON EMPTY([Date].[Calendar].[Calendar Year]) ON 1 FROM [Adventure Works]";
            var cmd   = new NBi.Core.Query.Query(query, ConnectionStringReader.GetAdomd());


            var actualBuilder = new ResultSetServiceBuilder();

            actualBuilder.Setup(new FakeQueryResultSetResolver(cmd, serviceLocator));
            var actual = actualBuilder.GetService();

            //Assertion
            Assert.That(ctr.Matches(actual));
        }
示例#25
0
        public void Matches_MdxQueryAndResulSetCsvFile_Matching()
        {
            //Buiding object used during test
            var filename = DiskOnFile.CreatePhysicalFile("NonEmptyAmountByYear.csv", "NBi.Testing.Integration.NUnit.Resources.NonEmptyAmountByYear.csv");
            var resolver = new CsvResultSetResolver(new CsvResultSetResolverArgs(new LiteralScalarResolver <string>(filename), string.Empty, CsvProfile.SemiColumnDoubleQuote));
            var builder  = new ResultSetServiceBuilder();

            builder.Setup(resolver);
            var ctr = new EqualToConstraint(builder.GetService());

            var mdx   = "SELECT [Measures].[Amount] ON 0, NON EMPTY([Date].[Calendar].[Calendar Year]) ON 1 FROM [Adventure Works]";
            var query = new NBi.Core.Query.Query(mdx, ConnectionStringReader.GetAdomd());


            var actualBuilder = new ResultSetServiceBuilder();

            actualBuilder.Setup(new FakeQueryResultSetResolver(query, serviceLocator));
            var actual = actualBuilder.GetService();

            //Assertion
            Assert.That(ctr.Matches(actual));
        }
示例#26
0
        public void Matches_MdxQueryAndSqlQueryWithCorrectSettings_Matching()
        {
            //Buiding object used during test
            var expectedQuery = "SELECT 'CY 2005',  1874469 UNION ";

            expectedQuery += " SELECT 'CY 2006', 4511243 UNION ";
            expectedQuery += " SELECT 'CY 2007', 4709851 UNION ";
            expectedQuery += " SELECT 'CY 2008', 1513940  ";

            var expectedCmd = new SqlCommand(expectedQuery, new SqlConnection(ConnectionStringReader.GetSqlClient()));

            var ctr = new EqualToConstraint(expectedCmd);

            ctr.Using(
                new SettingsResultSetComparisonByIndex(
                    SettingsResultSetComparisonByIndex.KeysChoice.AllExpectLast,
                    SettingsResultSetComparisonByIndex.ValuesChoice.Last,
                    new List <IColumnDefinition>()
            {
                new Column()
                {
                    Index     = 1,
                    Role      = ColumnRole.Value,
                    Type      = ColumnType.Numeric,
                    Tolerance = "5"
                }
            }
                    )
                );

            var query = "SELECT  [Measures].[Amount] ON 0, NON EMPTY([Date].[Calendar].[Calendar Year]) ON 1 FROM [Adventure Works]";
            var cmd   = new AdomdCommand(query, new AdomdConnection(ConnectionStringReader.GetAdomd()));

            //Call the method to test
            var actual = ctr.Matches(cmd);

            //Assertion
            Assert.That(actual, Is.True);
        }
示例#27
0
        public void Matches_SqlQueryWithDateComparedToStringAnotherHour_NonMatching()
        {
            //Buiding object used during test
            var expectedQuery = "SELECT 'CY 2010',  CAST('2010-01-01' AS DATE)";

            var expectedCmd = new SqlCommand(expectedQuery, new SqlConnection(ConnectionStringReader.GetSqlClient()));

            var columns = new List <IColumnDefinition>()
            {
                new Column()
                {
                    Index = 1, Role = ColumnRole.Value, Type = ColumnType.DateTime
                }
            };

            var expectedLoader  = new FakeQueryResultSetLoader(expectedCmd);
            var expectedBuilder = new ResultSetServiceBuilder();

            expectedBuilder.Setup(expectedLoader);
            var ctr = new EqualToConstraint(expectedBuilder.GetService());

            ctr.Using(
                new SettingsIndexResultSet(
                    SettingsIndexResultSet.KeysChoice.AllExpectLast,
                    SettingsIndexResultSet.ValuesChoice.Last,
                    columns
                    )
                );

            var query   = "SELECT 'CY 2010',  '1/01/2010 01:00:00'";
            var cmd     = new SqlCommand(query, new SqlConnection(ConnectionStringReader.GetSqlClient()));
            var builder = new ResultSetServiceBuilder();

            builder.Setup(new FakeQueryResultSetLoader(cmd));
            var actual = builder.GetService();

            //Assertion
            Assert.That(ctr.Matches(actual), Is.False);
        }
示例#28
0
        public void Matches_SqlQueryWithDateComparedToStringAnotherHour_NonMatching()
        {
            //Buiding object used during test
            var expectedSql   = "SELECT 'CY 2010',  CAST('2010-01-01' AS DATE)";
            var expectedQuery = new NBi.Core.Query.Query(expectedSql, ConnectionStringReader.GetSqlClient());

            var columns = new List <IColumnDefinition>()
            {
                new Column()
                {
                    Identifier = new ColumnOrdinalIdentifier(1), Role = ColumnRole.Value, Type = ColumnType.DateTime
                }
            };

            var expectedLoader  = new FakeQueryResultSetResolver(expectedQuery, serviceLocator);
            var expectedBuilder = new ResultSetServiceBuilder();

            expectedBuilder.Setup(expectedLoader);
            var ctr = new EqualToConstraint(expectedBuilder.GetService());

            ctr.Using(
                new SettingsOrdinalResultSet(
                    SettingsOrdinalResultSet.KeysChoice.AllExpectLast,
                    SettingsOrdinalResultSet.ValuesChoice.Last,
                    columns
                    )
                );

            var sql2    = "SELECT 'CY 2010',  '1/01/2010 01:00:00'";
            var query   = new NBi.Core.Query.Query(sql2, ConnectionStringReader.GetSqlClient());
            var builder = new ResultSetServiceBuilder();

            builder.Setup(new FakeQueryResultSetResolver(query, serviceLocator));
            var actual = builder.GetService();

            //Assertion
            Assert.That(ctr.Matches(actual), Is.False);
        }
示例#29
0
        public void Matches_MdxQueryAndResulSetWithoutKeyValuesInfo_Matching()
        {
            //Buiding object used during test
            var rs   = new ResultSet();
            var objs = new List <object[]>();

            objs.Add(new object[] { "CY 2005", "1874469.00" });
            objs.Add(new object[] { "CY 2006", "4511243.0" });
            objs.Add(new object[] { "CY 2007", "4709851" });
            objs.Add(new object[] { "CY 2008", "1513940" });
            rs.Load(objs);

            var ctr = new EqualToConstraint(rs);

            var query = "SELECT [Measures].[Amount] ON 0, NON EMPTY([Date].[Calendar].[Calendar Year]) ON 1 FROM [Adventure Works]";
            var cmd   = new AdomdCommand(query, new AdomdConnection(ConnectionStringReader.GetAdomd()));

            //Call the method to test
            var actual = ctr.Matches(cmd);

            //Assertion
            Assert.That(actual, Is.True);
        }
示例#30
0
        public void Matches_MdxQueryAndSameQueryWithCorrectSettings_Matching()
        {
            //Buiding object used during test
            var expectedQuery = "SELECT [Measures].[Amount] ON 0, NON EMPTY([Date].[Calendar].[Calendar Year]) ON 1 FROM [Adventure Works]";
            var expectedCmd   = new AdomdCommand(expectedQuery, new AdomdConnection(ConnectionStringReader.GetAdomd()));

            var ctr = new EqualToConstraint(expectedCmd);

            ctr.Using(new ResultSetComparisonSettings(
                          ResultSetComparisonSettings.KeysChoice.First,
                          ResultSetComparisonSettings.ValuesChoice.Last,
                          NumericAbsoluteTolerance.None)
                      );

            var query = "SELECT [Measures].[Amount] ON 0, NON EMPTY([Date].[Calendar].[Calendar Year]) ON 1  FROM [Adventure Works]";
            var cmd   = new AdomdCommand(query, new AdomdConnection(ConnectionStringReader.GetAdomd()));

            //Call the method to test
            var actual = ctr.Matches(cmd);

            //Assertion
            Assert.That(actual, Is.True);
        }