private void TestSorting(int precisionStep)
{
string field = "field" + precisionStep;
// 10 random tests, the index order is ascending,
// so using a reverse sort field should retun descending documents
int num = TestUtil.NextInt(Random(), 10, 20);
for (int i = 0; i < num; i++)
{
long lower = (long)(Random().NextDouble() * NoDocs * Distance) + StartOffset;
long upper = (long)(Random().NextDouble() * NoDocs * Distance) + StartOffset;
if (lower > upper)
{
long a = lower;
lower = upper;
upper = a;
}
Query tq = NumericRangeQuery.NewLongRange(field, precisionStep, lower, upper, true, true);
TopDocs topDocs = Searcher.Search(tq, null, NoDocs, new Sort(new SortField(field, SortField.Type_e.LONG, true)));
if (topDocs.TotalHits == 0)
{
continue;
}
ScoreDoc[] sd = topDocs.ScoreDocs;
Assert.IsNotNull(sd);
long last = (long)Searcher.Doc(sd[0].Doc).GetField(field).NumericValue;
for (int j = 1; j < sd.Length; j++)
{
long act = (long)Searcher.Doc(sd[j].Doc).GetField(field).NumericValue;
Assert.IsTrue(last > act, "Docs should be sorted backwards");
last = act;
}
}
}