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>(); }
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); }
/// <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); }