fix test bug to not abuse hit scores for checking which hits were found

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1725386 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael McCandless 2016-01-18 23:19:26 +00:00
parent fb0aa2dc49
commit e127db28f9
1 changed files with 15 additions and 6 deletions

View File

@ -23,9 +23,11 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Set;
import org.apache.lucene.analysis.MockAnalyzer; import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.BinaryDocValuesField; import org.apache.lucene.document.BinaryDocValuesField;
@ -290,20 +292,27 @@ public class AllGroupHeadsCollectorTest extends LuceneTestCase {
} }
final IndexSearcher s = newSearcher(r); final IndexSearcher s = newSearcher(r);
Set<Integer> seenIDs = new HashSet<>();
for (int contentID = 0; contentID < 3; contentID++) { for (int contentID = 0; contentID < 3; contentID++) {
final ScoreDoc[] hits = s.search(new TermQuery(new Term("content", "real" + contentID)), numDocs).scoreDocs; final ScoreDoc[] hits = s.search(new TermQuery(new Term("content", "real" + contentID)), numDocs).scoreDocs;
for (ScoreDoc hit : hits) { for (ScoreDoc hit : hits) {
final GroupDoc gd = groupDocs[(int) docIdToFieldId.get(hit.doc)]; int idValue = (int) docIdToFieldId.get(hit.doc);
final GroupDoc gd = groupDocs[idValue];
assertEquals(gd.id, idValue);
seenIDs.add(idValue);
assertTrue(gd.score == 0.0); assertTrue(gd.score == 0.0);
gd.score = hit.score; gd.score = hit.score;
int docId = gd.id;
assertEquals(docId, docIdToFieldId.get(hit.doc));
} }
} }
// make sure all groups were seen across the hits
assertEquals(groupDocs.length, seenIDs.size());
// make sure scores are sane
for (GroupDoc gd : groupDocs) { for (GroupDoc gd : groupDocs) {
assertTrue(gd.score != 0.0); assertTrue(Float.isFinite(gd.score));
assertTrue(gd.score >= 0.0);
} }
for (int searchIter = 0; searchIter < 100; searchIter++) { for (int searchIter = 0; searchIter < 100; searchIter++) {