};
DynamicDAO.addEntityListener(INews.class, newsListener);
/* First Reload */
InMemoryProtocolHandler.FEED = generateFeed("Title", null, null, null);
fController.reload(bookmark, null, new NullProgressMonitor());
assertEquals(1, feedRef.resolve().getNews().size());
assertEquals(1, getUnreadCount(feed));
assertEquals(1, getNewCount(feed));
assertEquals(INews.State.NEW, feedRef.resolve().getNews().get(0).getState());
assertEquals(1, addedCounter[0]);
/* Set to Unread */
fNewsDao.setState(feedRef.resolve().getNews(), INews.State.UNREAD, true, false);
assertEquals(1, updatedCounter[0]);
/* Second Reload with different Title */
InMemoryProtocolHandler.FEED = generateFeed("Title *new*", null, null, null);
fController.reload(bookmark, null, new NullProgressMonitor());
assertEquals(2, feedRef.resolve().getNews().size());
assertEquals(2, getUnreadCount(feed));
assertEquals(1, getNewCount(feed));
assertEquals(1, updatedCounter[0]);
assertEquals(2, addedCounter[0]);
List<INews> news = feedRef.resolve().getNews();
for (INews newsItem : news) {
if ("Title".equals(newsItem.getTitle()))
assertEquals(INews.State.UNREAD, newsItem.getState());
else if ("Title *new*".equals(newsItem.getTitle()))
assertEquals(INews.State.NEW, newsItem.getState());
}
/* Set to Read */
fNewsDao.setState(feedRef.resolve().getNews(), INews.State.READ, true, false);
assertEquals(3, updatedCounter[0]);
fController.reload(bookmark, null, new NullProgressMonitor());
assertEquals(2, feedRef.resolve().getNews().size());
assertEquals(0, getUnreadCount(feed));
assertEquals(INews.State.READ, feedRef.resolve().getNews().get(0).getState());
assertEquals(INews.State.READ, feedRef.resolve().getNews().get(1).getState());
assertEquals(3, updatedCounter[0]);