Пример #1
0
        public void CsvToDataTableConversionOutputTest()
        {
            DataTable table       = CSVToDatatableParser.Parse(@"TestCases\Parser\Table.csv");
            DataTable outputTable = CSVToDatatableParser.Parse(@"TestCases\Parser\TableOutput.csv");

            Assert.AreEqual(table.Rows[2][0], outputTable.Rows[1][0]);
        }
Пример #2
0
        public void DataTableCrossMultiple()
        {
            DataTable table1 = CSVToDatatableParser.Parse(@"TestCases\Synthesis\WithLogic-Input.csv");
            DataTable table2 = CSVToDatatableParser.Parse(@"TestCases\Synthesis\SelectWithWhere-Output.csv");
            DataTable table3 = CSVToDatatableParser.Parse(@"TestCases\Synthesis\SelectWithoutWhere-Output.csv");
            var       cross  = Semantics.Semantics.CrossMultiplyTables(new[] { table1, table2, table3 });

            Assert.IsTrue(cross.Columns.Count == table1.Columns.Count + table2.Columns.Count + table3.Columns.Count);
            Assert.IsTrue(cross.Rows.Count == table1.Rows.Count * table2.Rows.Count * table3.Rows.Count);
        }
Пример #3
0
        public void CsvToDataTableConversionTest()
        {
            DataTable table = CSVToDatatableParser.Parse(@"TestCases\Parser\Table.csv");

            Assert.IsTrue(table.Columns.Count == 3);
            Assert.IsTrue(table.Rows.Count == 5);
            Assert.IsTrue((string)table.Rows[2]["Name"] == "Amitayush");
            Assert.IsTrue((string)table.Rows[2]["Uni"] == "Pilani");
            Assert.IsTrue((double)table.Rows[2]["Age"] == 23);
        }
Пример #4
0
        public void SelectWithWhereSynthesisTest4()
        {
            DataTable inputTable   = CSVToDatatableParser.Parse(@"TestCases\Synthesis\SelectWithWhere1-Input.csv");
            DataTable outputTable  = CSVToDatatableParser.Parse(@"TestCases\Synthesis\SelectWithWhere1-Output.csv");
            var       programNode  = Learner.Instance.LearnSQL(inputTable, outputTable);
            DataTable outputLearnt = Learner.Instance.Invoke(programNode, inputTable);

            Assert.IsTrue(outputLearnt.Columns.Count == outputTable.Columns.Count);
            Assert.IsTrue(outputLearnt.Rows.Count == outputTable.Rows.Count);
            Assert.IsTrue((string)outputLearnt.Rows[0]["Name"] == (string)outputTable.Rows[0]["Name"]);
            Assert.IsTrue((string)outputLearnt.Rows[1]["Name"] == (string)outputTable.Rows[1]["Name"]);
        }
Пример #5
0
        public void ComparatorTest()
        {
            DataTable  table            = CSVToDatatableParser.Parse(@"TestCases\Semantics\TableInput.csv");
            DataColumn column           = new DataColumn("Age", typeof(double));
            DataTable  transformedTable = Semantics.Semantics.Comparator(column, new DataTable[] { table }, "==", 22);
            DataTable  desiredTable     = CSVToDatatableParser.Parse(@"TestCases\Semantics\TableOutputCondition.csv");

            Assert.IsTrue(desiredTable.Columns.Count == transformedTable.Columns.Count);
            Assert.IsTrue(table.Rows.Count != transformedTable.Rows.Count);
            Assert.IsTrue((string)desiredTable.Rows[1]["Name"] == (string)transformedTable.Rows[1]["Name"]);
            Assert.IsTrue((string)desiredTable.Rows[1]["Uni"] == (string)transformedTable.Rows[1]["Uni"]);
            Assert.IsTrue((double)desiredTable.Rows[1]["Age"] == (double)transformedTable.Rows[1]["Age"]);
        }
Пример #6
0
        public void LogicalTest()
        {
            DataTable  table      = CSVToDatatableParser.Parse(@"TestCases\Semantics\TableInput.csv");
            DataColumn column     = new DataColumn("Age", typeof(double));
            DataTable  firstTable = Semantics.Semantics.Comparator(column, new DataTable[] { table }, "==", 22);

            column = new DataColumn("Uni", typeof(string));
            DataTable secondTable    = Semantics.Semantics.Comparator(column, new DataTable[] { table }, "==", "Pilani");
            DataTable unionTable     = Semantics.Semantics.Logical(firstTable, secondTable, "OR");
            DataTable intersectTable = Semantics.Semantics.Logical(firstTable, secondTable, "AND");

            Assert.IsTrue(unionTable.Rows.Count == 3);
            Assert.IsTrue(intersectTable.Rows.Count == 1);
        }
Пример #7
0
        public void DataTableCrossTest()
        {
            DataTable table1     = CSVToDatatableParser.Parse(@"TestCases\Synthesis\WithLogic-Input.csv");
            DataTable table2     = CSVToDatatableParser.Parse(@"TestCases\Synthesis\WithLogic-Output.csv");
            DataTable crossTable = Utils.Utils.CrossTable(table1, table2);

            Assert.IsTrue(crossTable.Columns.Count == table1.Columns.Count + table2.Columns.Count);
            Assert.IsTrue(crossTable.Rows.Count == table1.Rows.Count * table2.Rows.Count);
            table1     = CSVToDatatableParser.Parse(@"TestCases\Synthesis\WithLogic-Input.csv");
            table2     = CSVToDatatableParser.Parse(@"TestCases\Synthesis\SelectWithoutWhere-Output.csv");
            crossTable = Utils.Utils.CrossTable(table1, table2);
            Assert.IsTrue(crossTable.Columns.Count == table1.Columns.Count + table2.Columns.Count);
            Assert.IsTrue(crossTable.Rows.Count == table1.Rows.Count * table2.Rows.Count);
        }
Пример #8
0
        public void PrimaryKeyFailTest()
        {
            DataTable inputTable        = CSVToDatatableParser.Parse(@"TestCases\Synthesis\PrimaryKeyFail-Input.csv");
            DataTable outputTable       = CSVToDatatableParser.Parse(@"TestCases\Synthesis\PrimaryKeyFail-Output.csv");
            var       generatedPrograms = Learner.Instance.LearnSQLAll(inputTable, outputTable);

            Assert.IsTrue(generatedPrograms.Length >= 1);
            foreach (var programNode in generatedPrograms)
            {
                DataTable outputLearnt = Learner.Instance.Invoke(programNode, inputTable);
                Assert.IsTrue(outputLearnt.Columns.Count == outputTable.Columns.Count);
                Assert.IsTrue(outputLearnt.Rows.Count == outputTable.Rows.Count);
                Assert.IsTrue(Utils.Utils.EqualColumns(outputLearnt, outputTable));
            }
        }
Пример #9
0
        public void SelectWithWhereNotEqualSynthesisTest()
        {
            DataTable inputTable        = CSVToDatatableParser.Parse(@"TestCases\Synthesis\SelectWithWhere\SWW-NotEqual-Input.csv");
            DataTable outputTable       = CSVToDatatableParser.Parse(@"TestCases\Synthesis\SelectWithWhere\SWW-NotEqual-Output.csv");
            var       generatedPrograms = Learner.Instance.LearnSQLTopK(inputTable, outputTable, 10);

            Assert.IsTrue(generatedPrograms.Length >= 1);
            foreach (var programNode in generatedPrograms)
            {
                DataTable outputLearnt = Learner.Instance.Invoke(programNode, inputTable);
                Assert.IsTrue(outputLearnt.Columns.Count == outputTable.Columns.Count);
                Assert.IsTrue(outputLearnt.Rows.Count == outputTable.Rows.Count);
                Assert.IsTrue(Utils.Utils.EqualColumns(outputLearnt, outputTable));
            }
        }
Пример #10
0
        public void SelectWithWhereTest()
        {
            DataTable table = CSVToDatatableParser.Parse(@"TestCases\Semantics\TableInput.csv");

            DataColumn[] columns =
            {
                new DataColumn("Name", typeof(string)),
                new DataColumn("Uni",  typeof(string))
            };
            DataTable transformedTable = Semantics.Semantics.SelectWithWhere(columns, table);
            DataTable desiredTable     = CSVToDatatableParser.Parse(@"TestCases\Semantics\TableOutput.csv");

            Assert.IsTrue(desiredTable.Columns.Count == transformedTable.Columns.Count);
            Assert.IsTrue(desiredTable.Rows.Count == transformedTable.Rows.Count);
            Assert.IsTrue((string)desiredTable.Rows[4]["Name"] == (string)transformedTable.Rows[4]["Name"]);
            Assert.IsTrue((string)desiredTable.Rows[4]["Uni"] == (string)transformedTable.Rows[4]["Uni"]);
        }
Пример #11
0
        public void SelectWithWhereSynthesisTest1()
        {
            DataTable inputTable        = CSVToDatatableParser.Parse(@"TestCases\Synthesis\SelectWithWhere-Input.csv");
            DataTable outputTable       = CSVToDatatableParser.Parse(@"TestCases\Synthesis\SelectWithWhere-Output.csv");
            var       generatedPrograms = Learner.Instance.LearnSQLAll(inputTable, outputTable);


            Assert.IsTrue(generatedPrograms.Length >= 1);
            foreach (var programNode in generatedPrograms)
            {
                Console.Write(programNode + " = " + programNode.GetFeatureValue(Learner.Instance.QueryRanker));
                DataTable outputLearnt = Learner.Instance.Invoke(programNode, inputTable);
                Assert.IsTrue(outputLearnt.Columns.Count == outputTable.Columns.Count);
                Assert.IsTrue(outputLearnt.Rows.Count == outputTable.Rows.Count);
                Assert.IsTrue(Utils.Utils.EqualColumns(outputLearnt, outputTable));
            }
        }
Пример #12
0
        public void CrossDataRowTest()
        {
            DataTable table1 = CSVToDatatableParser.Parse(@"TestCases\Synthesis\DataRowCross1.csv");
            DataTable table2 = CSVToDatatableParser.Parse(@"TestCases\Synthesis\DataRowCross2.csv");
            DataTable table3 = CSVToDatatableParser.Parse(@"TestCases\Synthesis\DataRowCross3.csv");
            var       rows1  = new DataRow[table1.Rows.Count];

            table1.Rows.CopyTo(rows1, 0);
            var rows2 = new DataRow[table2.Rows.Count];

            table2.Rows.CopyTo(rows2, 0);
            var rows3 = new DataRow[table3.Rows.Count];

            table3.Rows.CopyTo(rows3, 0);
            var cross = Utils.Utils.GetAllPossibleTables(
                new[] { rows1, rows2, rows3 }.ToList(),
                new[] { 1, 2, 1 }.ToList(),
                table1);

            Assert.AreEqual(table1.Rows.Count *
                            table2.Rows.Count *
                            table3.Rows.Count, cross.Count());
        }