### Question:
MemoizableIterator implements Iterator<T> { @Override public T next() { current = delegate.next(); currentInitialized = true; return current; } MemoizableIterator(Iterator<T> delegate); static MemoizableIterator<T> wrap(Iterator<T> iterator); @Override boolean hasNext(); @Override T next(); @Override void remove(); T current();  }### Answer:
@Test(expected = NoSuchElementException.class) public void next_should_throw_when_no_more_element__initial_empty_case () { List<String> elements = Arrays.asList(); MemoizableIterator<String> it = new MemoizableIterator<String>(elements.iterator()); it.next(); }