lucenenet-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Neal Granroth (JIRA)" <j...@apache.org>
Subject [jira] Commented: (LUCENENET-97) HitIterator does not correctly implement System.Collections.IEnumerator
Date Wed, 29 Aug 2007 21:42:31 GMT

    [ https://issues.apache.org/jira/browse/LUCENENET-97?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12523697
] 

Neal Granroth commented on LUCENENET-97:
----------------------------------------

The problem description lists the specific failure.
However, to be very specific, here is an NUnit test case illustrating the problem: 


       [Test]
		public virtual void  TestIterator2()
		{
			RAMDirectory directory = new RAMDirectory();
			
			IndexWriter writer = new IndexWriter(directory, new WhitespaceAnalyzer(), true);
			Lucene.Net.Documents.Document doc = new Lucene.Net.Documents.Document();
			doc.Add(new Field("field", "iterator test doc 1", Field.Store.YES, Field.Index.TOKENIZED));
			writer.AddDocument(doc);
			
			doc = new Lucene.Net.Documents.Document();
			doc.Add(new Field("field", "iterator test doc 2", Field.Store.YES, Field.Index.TOKENIZED));
			writer.AddDocument(doc);
			
			writer.Close();
			
			IndexSearcher searcher = new IndexSearcher(directory);
			Hits hits = searcher.Search(new TermQuery(new Term("field", "iterator")));
			
			// ..................			

			HitIterator iterator = (HitIterator) hits.Iterator();
			Assert.AreEqual(2, iterator.Length());
			
			// ..................			

			iterator.MoveNext(); // position to 1st hit
			iterator.MoveNext(); // position to 2nd hit
			Assert.AreEqual("iterator test doc 2",
				((Hit)iterator.Current).GetDocument().Get("field"));
				
			// ..................			
			
			HitIterator iterator2 = (HitIterator) hits.Iterator();

			Hit hit = (Hit) iterator2.Current;
			Assert.AreEqual("iterator test doc 1", hit.Get("field"));
			
			// Verify that "Current" does not move, when MoveNext is not called.
			
			Hit hitAgain = (Hit) iterator2.Current;
			Assert.AreEqual("iterator test doc 1", hitAgain.Get("field"));
			
		}


> HitIterator does not correctly implement System.Collections.IEnumerator
> -----------------------------------------------------------------------
>
>                 Key: LUCENENET-97
>                 URL: https://issues.apache.org/jira/browse/LUCENENET-97
>             Project: Lucene.Net
>          Issue Type: Bug
>         Environment: .NET
>            Reporter: Neal Granroth
>
> method MoveNext() is supposed to increment the position within the list; it does not.
> method Current() is supposed to return the object at the current position, but not change
the position within the list.
> It incorrectly moves to the next position.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message