public void TestSamplingObjectsWithinEntireSkylineCount()
        {
            var entireSkylineSQL = TestContext.DataRow["entireSkylineSQL"].ToString();
            var testComment      = TestContext.DataRow["comment"].ToString();

            Debug.WriteLine(testComment);

            var common = new SQLCommon {
                SkylineType = new SkylineBNL()
            };

            var prefSqlModelEntireSkyline = common.GetPrefSqlModelFromPreferenceSql(entireSkylineSQL);
            var subjectUnderTest          = new SQLParser.Helper
            {
                ConnectionString = Helper.ConnectionString,
                DriverString     = Helper.ProviderName
            };

            var entireSkyline = subjectUnderTest.GetResults(
                common.GetAnsiSqlFromPrefSqlModel(prefSqlModelEntireSkyline), common.SkylineType,
                prefSqlModelEntireSkyline, false);

            var expected = TestContext.DataRow["entireCount"].ToString();
            var actual   = entireSkyline.Rows.Count.ToString(CultureInfo.InvariantCulture);

            Assert.AreEqual(expected, actual, "Entire Skyline contains unexpected number of objects.");
        }
        public void TestSamplingOnlyNonDominatedObjectsWithinSampleSkylineViaGetSkyline()
        {
            string skylineSampleSQL = TestContext.DataRow["skylineSampleSQL"].ToString();
            string entireSkylineSQL = TestContext.DataRow["entireSkylineSQL"].ToString();
            string testComment      = TestContext.DataRow["comment"].ToString();

            Debug.WriteLine(testComment);
            Debug.WriteLine(skylineSampleSQL);

            var common = new SQLCommon
            {
                SkylineType =
                    new SkylineBNL()
                {
                    Provider = Helper.ProviderName, ConnectionString = Helper.ConnectionString
                }
            };

            var prefSqlModelSkylineSample = common.GetPrefSqlModelFromPreferenceSql(skylineSampleSQL);
            var prefSqlModelEntireSkyline = common.GetPrefSqlModelFromPreferenceSql(entireSkylineSQL);

            var subjectUnderTest = new SQLParser.Helper
            {
                ConnectionString = Helper.ConnectionString,
                DriverString     = Helper.ProviderName
            };

            var sw = new Stopwatch();

            sw.Start();
            var entireSkyline = subjectUnderTest.GetResults(
                common.GetAnsiSqlFromPrefSqlModel(prefSqlModelEntireSkyline), common.SkylineType,
                prefSqlModelEntireSkyline, false);

            sw.Stop();
            Debug.WriteLine("ORIG ElapsedMilliseconds={0}", sw.ElapsedMilliseconds);
            Debug.WriteLine("ORIG Algorithm ElapsedMilliseconds={0}", subjectUnderTest.TimeInMilliseconds);
            sw.Restart();
            var sampleSkyline = subjectUnderTest.GetResults(
                common.GetAnsiSqlFromPrefSqlModel(prefSqlModelSkylineSample), common.SkylineType,
                prefSqlModelSkylineSample, false);

            sw.Stop();
            Debug.WriteLine("SMPL ElapsedMilliseconds={0}", sw.ElapsedMilliseconds);
            Debug.WriteLine("SMPL Algorithm ElapsedMilliseconds={0}", subjectUnderTest.TimeInMilliseconds);

            var entireSkylineObjectsIds = GetHashSetOfIdsFromDataTable(entireSkyline);
            var sampleSkylineObjectsIds = GetHashSetOfIdsFromDataTable(sampleSkyline);

            Debug.WriteLine("ORIG Count={0}", entireSkylineObjectsIds.Count);
            Debug.WriteLine("SMPL Count={0}", sampleSkylineObjectsIds.Count);

            Assert.IsTrue(sampleSkylineObjectsIds.IsSubsetOf(entireSkylineObjectsIds),
                          "Dominated objects contained in Sample Skyline (i.e., objects which are not contained in the entire Skyline).");
        }
        public void TestSamplingOnlyNonDominatedObjectsWithinSampleSkylineViaGetSkyline()
        {
            string skylineSampleSQL = TestContext.DataRow["skylineSampleSQL"].ToString();
            string entireSkylineSQL = TestContext.DataRow["entireSkylineSQL"].ToString();
            string testComment = TestContext.DataRow["comment"].ToString();
            Debug.WriteLine(testComment);
            Debug.WriteLine(skylineSampleSQL);

            var common = new SQLCommon
            {
                SkylineType =
                    new SkylineBNL() { Provider = Helper.ProviderName, ConnectionString = Helper.ConnectionString }
            };

            var prefSqlModelSkylineSample = common.GetPrefSqlModelFromPreferenceSql(skylineSampleSQL);
            var prefSqlModelEntireSkyline = common.GetPrefSqlModelFromPreferenceSql(entireSkylineSQL);

            var subjectUnderTest = new SQLParser.Helper
            {
                ConnectionString = Helper.ConnectionString,
                DriverString = Helper.ProviderName
            };

            var sw = new Stopwatch();
            sw.Start();
            var entireSkyline = subjectUnderTest.GetResults(
                common.GetAnsiSqlFromPrefSqlModel(prefSqlModelEntireSkyline), common.SkylineType,
                prefSqlModelEntireSkyline, false);
            sw.Stop();
            Debug.WriteLine("ORIG ElapsedMilliseconds={0}", sw.ElapsedMilliseconds);
            Debug.WriteLine("ORIG Algorithm ElapsedMilliseconds={0}", subjectUnderTest.TimeInMilliseconds);
            sw.Restart();
            var sampleSkyline = subjectUnderTest.GetResults(
                common.GetAnsiSqlFromPrefSqlModel(prefSqlModelSkylineSample), common.SkylineType,
                prefSqlModelSkylineSample, false);
            sw.Stop();
            Debug.WriteLine("SMPL ElapsedMilliseconds={0}", sw.ElapsedMilliseconds);
            Debug.WriteLine("SMPL Algorithm ElapsedMilliseconds={0}", subjectUnderTest.TimeInMilliseconds);

            var entireSkylineObjectsIds = GetHashSetOfIdsFromDataTable(entireSkyline);
            var sampleSkylineObjectsIds = GetHashSetOfIdsFromDataTable(sampleSkyline);
            Debug.WriteLine("ORIG Count={0}", entireSkylineObjectsIds.Count);
            Debug.WriteLine("SMPL Count={0}", sampleSkylineObjectsIds.Count);

            Assert.IsTrue(sampleSkylineObjectsIds.IsSubsetOf(entireSkylineObjectsIds),
                "Dominated objects contained in Sample Skyline (i.e., objects which are not contained in the entire Skyline).");
        }
        public void TestSamplingObjectsWithinEntireSkylineCount()
        {
            var entireSkylineSQL = TestContext.DataRow["entireSkylineSQL"].ToString();
            var testComment = TestContext.DataRow["comment"].ToString();
            Debug.WriteLine(testComment);

            var common = new SQLCommon {SkylineType = new SkylineBNL()};

            var prefSqlModelEntireSkyline = common.GetPrefSqlModelFromPreferenceSql(entireSkylineSQL);
            var subjectUnderTest = new SQLParser.Helper
            {
                ConnectionString = Helper.ConnectionString,
                DriverString = Helper.ProviderName
            };

            var entireSkyline = subjectUnderTest.GetResults(
                common.GetAnsiSqlFromPrefSqlModel(prefSqlModelEntireSkyline), common.SkylineType,
                prefSqlModelEntireSkyline, false);

            var expected = TestContext.DataRow["entireCount"].ToString();
            var actual = entireSkyline.Rows.Count.ToString(CultureInfo.InvariantCulture);
            Assert.AreEqual(expected, actual, "Entire Skyline contains unexpected number of objects.");
        }