package com.lyft.scoop; import java.util.Arrays; import java.util.List; import org.junit.Test; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNull; public class RouteChangeTest { private static final TransitionDirection ENTER_TRANSITION = TransitionDirection.ENTER; @Test public void screenEmptyPath() { List<Screen> fromPath = Arrays.<Screen>asList(); List<Screen> toPath = Arrays.<Screen>asList(); RouteChange routeChange = new RouteChange(fromPath, toPath, ENTER_TRANSITION); ScreenSwap screenSwap = routeChange.toScreenSwap(); assertNull(screenSwap.next); assertNull(screenSwap.previous); assertEquals(ENTER_TRANSITION, screenSwap.direction); } @Test public void screenOneElementPath() { List<Screen> fromPath = Arrays.<Screen>asList(new ScreenA()); List<Screen> toPath = Arrays.<Screen>asList(new ScreenA()); RouteChange routeChange = new RouteChange(fromPath, toPath, ENTER_TRANSITION); ScreenSwap screenSwap = routeChange.toScreenSwap(); assertEquals(new ScreenA(), screenSwap.next); assertEquals(new ScreenA(), screenSwap.previous); assertEquals(ENTER_TRANSITION, screenSwap.direction); } @Test public void screenMultipleElementPath() { List<Screen> fromPath = Arrays.<Screen>asList(new ScreenA(), new ScreenB()); List<Screen> toPath = Arrays.<Screen>asList(new ScreenA(), new ScreenB()); RouteChange routeChange = new RouteChange(fromPath, toPath, ENTER_TRANSITION); ScreenSwap screenSwap = routeChange.toScreenSwap(); assertEquals(new ScreenB(), screenSwap.next); assertEquals(new ScreenB(), screenSwap.previous); assertEquals(ENTER_TRANSITION, screenSwap.direction); } static class ScreenA extends Screen { } static class ScreenB extends Screen { } }