private static void DistinctTest(Table table, string column, string where) { int iterations = 1000; DistinctQuery query = new DistinctQuery(column, where, 100); DistinctResult result = null; Trace.Write("Aggregating Bugs..."); for (int i = 0; i < iterations; ++i) { result = table.Query(query); } ShowResult(result.Values); }
public void ITable_Distinct(Func <ITable> factoryMethod) { // Define columns and add sample data ITable table = factoryMethod(); AddSampleData(table); // Get Distinct Priority for all bugs, verify three (0, 1, 3) DistinctQuery query = new DistinctQuery("Priority", "", 5); DistinctResult result = table.Query(query); // sort the results because order is not garenteed by distinct query Array values = result.Values.GetColumn(0); Array.Sort(values); Assert.AreEqual("0, 1, 3", values.Join(", ")); Assert.IsTrue(result.AllValuesReturned); // Verify the result converts to a dimension properly AggregationDimension dimension = result.ToAggregationDimension(); Assert.AreEqual("Query [[Priority] = 0,[Priority] = 1,[Priority] = 3]", dimension.ToString()); // Verify distinct priority where priority is not 1 has only two values query.Where = QueryParser.Parse("Priority != 1"); result = table.Query(query); // sort the results because order is not garenteed by distinct query values = result.Values.GetColumn(0); Array.Sort(values); Assert.AreEqual("0, 3", result.Values.GetColumn(0).Join(", ")); Assert.IsTrue(result.AllValuesReturned); // Verify if we only ask for one value, query reports more values left query.Count = 1; result = table.Query(query); // either value could come back, it's a race to whichever partition completes first Assert.IsTrue( ("0" == result.Values.GetColumn(0).Join(", ")) || ("3" == result.Values.GetColumn(0).Join(", "))); Assert.IsFalse(result.AllValuesReturned); }
public void ITable_DistinctTop(Func <ITable> factoryMethod) { // Define columns and add sample data ITable table = factoryMethod(); AddSampleData(table); // Get Distinct Priority for all bugs, verify three (3, 0, 1) DistinctQueryTop query = new DistinctQueryTop("Priority", "", 5); DistinctResult result = table.Query(query); // Verify "3" is first, it's in 3 items, all values are returned, three distinct were returned Assert.AreEqual("3", result.Values[0, 0].ToString()); Assert.AreEqual("3", result.Values[0, 1].ToString()); Assert.AreEqual(3, result.Values.RowCount); Assert.AreEqual(5, result.Total); Assert.IsTrue(result.AllValuesReturned); // Verify distinct priority where priority is not 1 has only two values query.Where = QueryParser.Parse("Priority != 1"); result = table.Query(query); Assert.AreEqual("3, 0", result.Values.GetColumn(0).Join(", ")); Assert.AreEqual(2, result.Values.RowCount); Assert.AreEqual(4, result.Total); Assert.IsTrue(result.AllValuesReturned); // Verify the result converts to a dimension properly AggregationDimension dimension = result.ToAggregationDimension(); Assert.AreEqual("Query [[Priority] = 3,[Priority] = 0]", dimension.ToString()); // Verify if we only ask for one value, query reports more values left query.Count = 1; result = table.Query(query); Assert.AreEqual("3", result.Values[0, 0].ToString()); Assert.AreEqual(1, result.Values.RowCount); Assert.IsFalse(result.AllValuesReturned); }