/// <summary> /// Tests that a query matches the an expected set of documents using a /// HitCollector. /// <para> /// Note that when using the HitCollector API, documents will be collected /// if they "match" regardless of what their score is. /// </para> /// </summary> /// <param name="luceneTestCase"> The current test instance. </param> /// <param name="query"> The query to test. </param> /// <param name="searcher"> The searcher to test the query against. </param> /// <param name="defaultFieldName"> Used for displaying the query in assertion messages. </param> /// <param name="results"> A list of documentIds that must match the query. </param> /// <seealso cref="DoCheckHits(LuceneTestCase, Random, Query, string, IndexSearcher, int[])"/> // LUCENENET specific // Removes dependency on <see cref="LuceneTestCase.ClassEnv.Similarity"/> public static void CheckHitCollector(LuceneTestCase luceneTestCase, Random random, Query query, string defaultFieldName, IndexSearcher searcher, int[] results) #endif { QueryUtils.Check( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION luceneTestCase, #endif random, query, searcher); Trace.TraceInformation("Checked"); JCG.SortedSet <int> correct = new JCG.SortedSet <int>(); for (int i = 0; i < results.Length; i++) { correct.Add(Convert.ToInt32(results[i], CultureInfo.InvariantCulture)); } JCG.SortedSet <int> actual = new JCG.SortedSet <int>(); ICollector c = new SetCollector(actual); searcher.Search(query, c); Assert.AreEqual(correct, actual, aggressive: false, () => "Simple: " + query.ToString(defaultFieldName)); for (int i = -1; i < 2; i++) { actual.Clear(); IndexSearcher s = QueryUtils.WrapUnderlyingReader( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION luceneTestCase, #endif random, searcher, i); s.Search(query, c); Assert.AreEqual(correct, actual, aggressive: false, () => "Wrap Reader " + i + ": " + query.ToString(defaultFieldName)); } }
/// <summary> /// Tests that a query matches the an expected set of documents using a /// HitCollector. /// <para> /// Note that when using the HitCollector API, documents will be collected /// if they "match" regardless of what their score is. /// </para> /// </summary> /// <param name="query"> The query to test. </param> /// <param name="searcher"> The searcher to test the query against. </param> /// <param name="defaultFieldName"> Used for displaying the query in assertion messages. </param> /// <param name="results"> A list of documentIds that must match the query. </param> /// <seealso cref="DoCheckHits(Random, Query, string, IndexSearcher, int[])"/> public static void CheckHitCollector(Random random, Query query, string defaultFieldName, IndexSearcher searcher, int[] results) { QueryUtils.Check(random, query, searcher); Trace.TraceInformation("Checked"); JCG.SortedSet <int> correct = new JCG.SortedSet <int>(results); JCG.SortedSet <int> actual = new JCG.SortedSet <int>(); ICollector c = new SetCollector(actual); searcher.Search(query, c); Assert.AreEqual(correct, actual, aggressive: false, () => "Simple: " + query.ToString(defaultFieldName)); for (int i = -1; i < 2; i++) { actual.Clear(); IndexSearcher s = QueryUtils.WrapUnderlyingReader(random, searcher, i); s.Search(query, c); Assert.AreEqual(correct, actual, aggressive: false, () => "Wrap Reader " + i + ": " + query.ToString(defaultFieldName)); } }