public IOption<string> GenerateHint(QueryResultTable correct, QueryResultTable submitted)
        {
            if (correct.Equals(submitted))
            {
                return Option.None<string>();
            }

            var correctColumns = Columns(correct);
            var submittedColumns = Columns(submitted);

            if (correctColumns.Count == submittedColumns.Count &&
                ContainsAllColumns(correctColumns, submittedColumns) &&
                ContainsAllColumns(submittedColumns, correctColumns)
            )
            {
                return Option.Some(WrongColumnOrder);
            }

            if (correctColumns.Count < submittedColumns.Count &&
                ContainsAllColumns(submittedColumns, correctColumns)
            )
            {
                return Option.Some(TooManyColumns);
            }

            return Option.None<string>();
        }
Example #2
0
 private static IEnumerable <KeyValuePair <int, double> > ExtractOrders(QueryResultTable table, string errorKey, string degreeKey)
 {
     return(table[errorKey].
            GroupBy(keyResultPair => (int)keyResultPair.Key[degreeKey]).
            Select(g => new KeyValuePair <int, double>(g.Key,
                                                       Regression(g.OrderBy(v => (int)v.Key["divisions"]).Select(v => (double)v.Value)))));
 }
        private IList<IList<object>> Columns(QueryResultTable table)
        {

            return table.ColumnNames
                .Select((name, index) => (IList<object>)new List<object> {name}.Concat(table.Rows.Select(row => row.ValueAtIndex<object>(index))).ToList())
                .ToList();
        }
 private object QueryResultTableToJson(QueryResultTable result)
 {
     return new
         {
             columnNames = result.ColumnNames.Select(name => name.ToString()).ToList(),
             rows = result.Rows.Select(RowToJson).ToList()
         };
 }
 public static object QueryResultToJson(QueryResultTable queryResult)
 {
     var resultsTable = new
     {
         columnNames = queryResult.ColumnNames.Select(name => name.ToString()).ToList(),
         rows = queryResult.Rows.Select(RowToJson).ToList()
     };
     return resultsTable;
 }
 private object SuccessfulResponse(string query, AnswerResult answerResult, QueryResultTable table)
 {
     var resultsTable = InteractiveSqlJson.QueryResultToJson(table);
     var response = new
         {
             query = query,
             results = resultsTable,
             isCorrectAnswer = answerResult.IsCorrect,
             hint = answerResult.Hint.ValueOrElse(null)
         };
     return Json(response);
 }
 public void ColumnNamesAreNotCaseSensitive()
 {
     var firstResult = new QueryResultTable(
         new List<string> { "color" },
         new List<QueryResultRow>()
     );
     var secondResult = new QueryResultTable(
         new List<string> { "Color" },
         new List<QueryResultRow>()
     );
     Assert.Equal(firstResult, secondResult);
 }
 public void QueryResultAreNotEqualIfColumnNamesDiffer()
 {
     var firstResult = new QueryResultTable(
         new List<string> { "LicensePlate", "Color" },
         new List<QueryResultRow>()
     );
     var secondResult = new QueryResultTable(
         new List<string> { "Color", "LicensePlate" },
         new List<QueryResultRow>()
     );
     Assert.NotEqual(firstResult, secondResult);
 }
Example #9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="table"></param>
        /// <param name="spatialDimension"></param>
        public static void CheckConvergenceRates(QueryResultTable table, int spatialDimension)
        {
            double eps = 0.12;

            foreach (var pair in ExtractOrders(table, "densityError", "dgDegree"))
            {
                Console.WriteLine("Density convergence rate for p={0}: {1:E16}", pair.Key, pair.Value);

                int pPlusOne = pair.Key + 1;
                Assert.That(
                    pair.Value >= pPlusOne - eps,
                    String.Format(
                        "Density convergence rate for p={0} too low (Should be {1} but is {2})",
                        pair.Key,
                        pPlusOne,
                        pair.Value));
            }

            foreach (var pair in ExtractOrders(table, "momentumError", "dgDegree"))
            {
                Console.WriteLine("Momentum convergence rate for p={0}: {1:E16}", pair.Key, pair.Value);

                int pPlusOne = pair.Key + 1;
                Assert.That(
                    pair.Value >= pPlusOne - eps,
                    String.Format(
                        "Momentum convergence rate for p={0} too low (Should be {1} but is {2})",
                        pair.Key,
                        pPlusOne,
                        pair.Value));
            }

            foreach (var pair in ExtractOrders(table, "energyError", "dgDegree"))
            {
                Console.WriteLine("Energy convergence rate for p={0}: {1:E16}", pair.Key, pair.Value);

                int pPlusOne = pair.Key + 1;
                Assert.That(
                    pair.Value >= pPlusOne - eps,
                    String.Format(
                        "Energy convergence rate for p={0} too low (Should be {1} but is {2})",
                        pair.Key,
                        pPlusOne,
                        pair.Value));
            }
        }
 public void QueryResultAreNotEqualIfRowsDiffer()
 {
     var firstResult = new QueryResultTable(
         new List<string> { "LicensePlate", "Color" },
         new List<QueryResultRow>
             {
                 Row("X422 PWL", "red"),
             }
     );
     var secondResult = new QueryResultTable(
         new List<string> { "Color", "LicensePlate" },
         new List<QueryResultRow>
             {
                 Row("B424 IFM", "green")
             }
     );
     Assert.NotEqual(firstResult, secondResult);
 }
 public void QueryResultAreEqualIfColumnNamesAndFieldsAreTheSame()
 {
     var firstResult = new QueryResultTable(
         new List<string>{"LicensePlate", "Color"},
         new List<QueryResultRow>
             {
                 Row("X422 PWL", "red"),
                 Row("B424 IFM", "green")
             }
     );
     var secondResult = new QueryResultTable(
         new List<string> { "LicensePlate", "Color" },
         new List<QueryResultRow>
             {
                 Row("X422 PWL", "red"),
                 Row("B424 IFM", "green")
             }
     );
     Assert.Equal(firstResult, secondResult);
 }
 public void EmptyQueryResultsAreEqual()
 {
     var firstResult = new QueryResultTable(new List<string>(), new List<QueryResultRow>());
     var secondResult = new QueryResultTable(new List<string>(), new List<QueryResultRow>());
     Assert.Equal(firstResult, secondResult);
 }