@Test public void testCompleteProgramDefinition() throws IOException { TrafficLight tl = repo.getByID("0"); Program program = tl.queryReadCompleteDefinition().get(); assertEquals(1, program.getLogics().length); Logic logic = program.getLogics()[0]; assertEquals("0", logic.getSubID()); assertEquals(0, logic.getCurrentPhaseIndex()); Phase[] phases = logic.getPhases(); assertEquals(8, phases.length); for (int i = 0; i < phases.length; i++) { Phase ph = phases[i]; assertEquals(PHASES_DURATION[i] * 1000, ph.getDuration()); assertArrayEquals(PHASES[i], ph.getState().lightStates); } }
@Test public void testChangingCompleteProgramDefinition() throws IOException { TrafficLight tl = repo.getByID("0"); final Logic expectedLogic = new Logic( "0", 0, new Phase[] { new Phase(10000, new TLState("rrGGyyyyggrryryr")), new Phase(15000, new TLState("GGyyrrrrrrGGrGrG")), new Phase(55000, new TLState("yyrrGGGGGGyyGyGy")) }); tl.queryChangeCompleteProgramDefinition().setValue(expectedLogic); tl.queryChangeCompleteProgramDefinition().run(); Program newProgram = tl.queryReadCompleteDefinition().get(); assertEquals(1, newProgram.getLogics().length); Logic actualLogic = newProgram.getLogics()[0]; assertEquals(expectedLogic.getSubID(), actualLogic.getSubID()); assertEquals(expectedLogic.getCurrentPhaseIndex(), actualLogic.getCurrentPhaseIndex()); Phase[] actualPhases = actualLogic.getPhases(); Phase[] expectedPhases = expectedLogic.getPhases(); assertEquals(expectedPhases.length, actualPhases.length); for (int i = 0; i < actualPhases.length; i++) { Phase actualPhase = actualPhases[i]; Phase expectedPhase = expectedPhases[i]; assertEquals(expectedPhase.getDuration(), actualPhase.getDuration()); assertArrayEquals(expectedPhase.getState().lightStates, actualPhase.getState().lightStates); } }