package org.wikipedia.json;
import org.junit.Test;
import org.wikipedia.dataclient.WikiSite;
import org.wikipedia.history.HistoryEntry;
import org.wikipedia.page.PageBackStackItem;
import org.wikipedia.page.PageTitle;
import org.wikipedia.page.tabs.Tab;
import java.util.Date;
import java.util.List;
import static java.util.Collections.singletonList;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.empty;
import static org.hamcrest.Matchers.is;
// PageTitle.PageProperties.Location uses a Bundle which is incompatible with Robolectric
public class TabUnmarshallerTest {
@Test public void testUnmarshalNull() {
assertThat(TabUnmarshaller.unmarshal(null), empty());
}
@Test public void testUnmarshalSingle() {
PageTitle page = new PageTitle("text", WikiSite.forLanguageCode("test"));
HistoryEntry history = new HistoryEntry(page, new Date(0), HistoryEntry.SOURCE_SEARCH);
Tab tab = new Tab();
tab.getBackStack().add(new PageBackStackItem(page, history));
List<Tab> tabs = singletonList(tab);
assertThat(TabUnmarshaller.unmarshal(GsonMarshaller.marshal(tabs)), is(tabs));
}
// T152980
@Test(expected = RuntimeException.class) public void testUnmarshalNoPageTitleAuthority() {
PageTitle page = new PageTitle("text", new WikiSite("", ""));
HistoryEntry history = new HistoryEntry(page, new Date(0), HistoryEntry.SOURCE_SEARCH);
Tab tab = new Tab();
tab.getBackStack().add(new PageBackStackItem(page, history));
List<Tab> tabs = singletonList(tab);
TabUnmarshaller.unmarshal(GsonMarshaller.marshal(tabs));
}
// T152980
@Test(expected = RuntimeException.class) public void testUnmarshalNoHistoryEntryAuthority() {
PageTitle page = new PageTitle("text", WikiSite.forLanguageCode("test"));
PageTitle prevPage = new PageTitle("text", new WikiSite("", ""));
HistoryEntry history = new HistoryEntry(prevPage, new Date(0), HistoryEntry.SOURCE_SEARCH);
Tab tab = new Tab();
tab.getBackStack().add(new PageBackStackItem(page, history));
List<Tab> tabs = singletonList(tab);
TabUnmarshaller.unmarshal(GsonMarshaller.marshal(tabs));
}
}