Junit реализует Iterable - PullRequest
       27

Junit реализует Iterable

1 голос
/ 18 марта 2012

Я пытаюсь выполнить тесты для класса, который реализует Iterable. Когда я иду, чтобы проверить любой метод, в классе itorator, как hasNext (), next (). Поэтому, когда я вызываю list.itorator (). Next (); ничего не происходит, узел является текущим узлом в списке, а не следующим. но когда я делаю ListIterator itrList = новый ListIterator (список); код внутри него работает. Я вызываю публичный Iterator iterator () {return new ListIterator (this); Так что же я не делаю правильно? Спасибо за любую помощь.

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());

}

Ответы [ 2 ]

7 голосов
/ 18 марта 2012

Вы создаете новый итератор каждый раз, когда вызываете list.iterator().Вы хотите сохранить один итератор и несколько раз вызывать его метод next, например,

Iterator itr = list.iterator();
assertEquals(1, itr.next());
assertEquals(2, itr.next());
0 голосов
/ 18 марта 2012

Вы каждый раз создаете новый итератор и начинаете сначала.

...