@Test public void testNext_doesNotUpdatePositionAtBeginningOfTimeline() { final Timeline<TestItem> fakeEndTimeline = new FakeItemTimeline(ZERO_ITEMS, ANY_POSITION, ANY_POSITION); delegate = new TimelineDelegate<>(fakeEndTimeline); delegate.timelineStateHolder.setPreviousCursor(new TimelineCursor(null, null)); delegate.next(null); assertNull(delegate.timelineStateHolder.positionForNext()); }
@Test public void testNext_updatesPositionForNext() { final Timeline<TestItem> fakeTimeline = new FakeItemTimeline(NUM_ITEMS, ANY_POSITION, TEST_MAX_POSITION); delegate = new TimelineDelegate<>(fakeTimeline); assertNull(delegate.timelineStateHolder.positionForPrevious()); delegate.next(null); assertEquals(TEST_MAX_POSITION, delegate.timelineStateHolder.positionForNext()); }
@Test public void testNext_addsItems() { final Timeline<TestItem> fakeTimeline = new FakeItemTimeline(NUM_ITEMS, ANY_POSITION, ANY_POSITION); delegate = new TimelineDelegate<>(fakeTimeline, mockObservable, null); delegate.refresh(null); // refresh loads latest items (notifyChange) delegate.next(null); // assert items are added and notifyChanges is called again assertEquals(2 * NUM_ITEMS, delegate.getCount()); verify(mockObservable, times(2)).notifyChanged(); }
@Test public void testNext_doesNotAddItemsAtBeginningOfTimeline() { // when a Timeline successfully returns an empty set of items, there are no next items (yet) LinkedList<TestItem> initialItems = new LinkedList<>(); final int INITIAL_COUNT = 5; initialItems = TestItem.populateList(initialItems, INITIAL_COUNT); final Timeline<TestItem> fakeEndTimeline = new FakeItemTimeline(ZERO_ITEMS, ANY_POSITION, ANY_POSITION); delegate = new TimelineDelegate<>(fakeEndTimeline, mockObservable, initialItems); delegate.next(null); // assert no items are added and notifyChanged is not called assertEquals(INITIAL_COUNT, delegate.getCount()); verifyZeroInteractions(mockObservable); }