You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2011/11/17 15:45:23 UTC

svn commit: r1203206 - /lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/search/AssertingIndexSearcher.java

Author: rmuir
Date: Thu Nov 17 14:45:23 2011
New Revision: 1203206

URL: http://svn.apache.org/viewvc?rev=1203206&view=rev
Log:
LUCENE-3580: add check to AssertingIndexSearcher that scorers obey DISI contract before next/advance

Modified:
    lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/search/AssertingIndexSearcher.java

Modified: lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/search/AssertingIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/search/AssertingIndexSearcher.java?rev=1203206&r1=1203205&r2=1203206&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/search/AssertingIndexSearcher.java (original)
+++ lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/search/AssertingIndexSearcher.java Thu Nov 17 14:45:23 2011
@@ -76,7 +76,18 @@ public class AssertingIndexSearcher exte
       @Override
       public Scorer scorer(AtomicReaderContext context, boolean scoreDocsInOrder,
           boolean topScorer, Bits acceptDocs) throws IOException {
-        return w.scorer(context, scoreDocsInOrder, topScorer, acceptDocs);
+        Scorer scorer = w.scorer(context, scoreDocsInOrder, topScorer, acceptDocs);
+        if (scorer != null) {
+          // check that scorer obeys disi contract for docID() before next()/advance
+          try {
+            int docid = scorer.docID();
+            assert docid == -1 || docid == DocIdSetIterator.NO_MORE_DOCS;
+          } catch (UnsupportedOperationException ignored) {
+            // from a top-level BS1
+            assert topScorer;
+          }
+        }
+        return scorer;
       }
 
       @Override