2012-03-18 14 views
1

Iterableを実装するクラスでテストをしようとしています。どのメソッドをテストするには、hasNext()、next()などのitoratorクラスでテストします。だから、私がlist.itorator()を呼び出すと、次の();何も起こらず、ノードはリスト内の現在のノードであり、次のノードではない。しかし、私はListIterator itrList =新しいListIterator(リスト);その内部のコードが機能します。私はpublicIterator iterator(){新しいListIterator(this)を返します。 私は正しくやっていないことは何ですか? ありがとうございました。JunitはIterableを実装します

public void test6() { 
    List<String> list = new List<String>(); 

    list.addAfterCurrent("1"); 
    list.addAfterCurrent("2"); 
    list.addAfterCurrent("3"); 
    ListIterator itrList = new ListIterator(list); 


    TextIO.putln(list.iterator().next()); // output is 1 
    TextIO.putln(list.iterator().next()); // output is 1 
    TextIO.putln(itrList.next());   // output is 1 
    TextIO.putln(itrList.next());   // now output is 2   
    assertEquals("1", list.getCurrent()); 
    assertEquals(3, list.size()); 

} 

答えて

7

list.iterator()に電話するたびに新しいイテレータを作成しています。同じイテレータを保持し、そのnextメソッドを複数回呼び出す必要があります。

Iterator itr = list.iterator(); 
assertEquals(1, itr.next()); 
assertEquals(2, itr.next()); 
+0

ありがとうございました。 – Sloshy

0

新しいイテレータを作成し、最初からやり直しています。

関連する問題