package com.plectix.simulator.staticanalysis; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.LinkedList; import java.util.List; import org.junit.Test; import com.plectix.simulator.interfaces.ObservableInterface; import com.plectix.simulator.staticanalysis.observables.ObservableState; import com.plectix.simulator.staticanalysis.observables.Observables; public class TestObservables { double[] times = new double[] { 0.01, 0.09, 0.12, 0.13, 0.14, 0.17, 0.24, 0.25, 0.34, 0.78, 0.99, 1.03 }; int[] answer1 = new int[] { -1, 2, 6, 8, 9, 9, 9, 9, 10, 10, 11 }; int[] answer2 = new int[] { -1, 3, 7, 9, 10, 11, 12 }; int[] answer3 = new int[] { -1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12 }; double[] answerTime = new double[] { 0.0, 0.12, 0.24, 0.34, 0.78, 0.99, 1.03 }; List<Agent> connectedAgents = new LinkedList<Agent>(); String name = ""; String line = ""; int id = 0; double fullTime = 1; double initialTime = 0; int points = 10; Observables obsPlainCalculate; Observables obsExactCalculate; List<ObservableInterface> list1; List<ObservableInterface> list2; ObservableMock obsMock1; ObservableMock obsMock2; boolean isUnique = true; @Test public void testCalculateObsTwoModes() { boolean isTime = true; // unusing variables int events = 0; init(isTime, events); run(isTime); timeCheck(); isTime = false; events = 12; init(isTime, events); run(isTime); eventsCheck(); } private void eventsCheck() { assertEquals(Double.valueOf(obsExactCalculate.getTimeSampleMin()), Double.valueOf(1.2)); ObservableInterface outputExact = obsExactCalculate.getComponentList() .get(0); ObservableInterface outputPlain = obsPlainCalculate.getComponentList() .get(0); List<ObservableState> countTimeExact = obsExactCalculate .getCountTimeList(); List<ObservableState> countTimePlain = obsPlainCalculate .getCountTimeList(); // for (int i = 0; i < countTimeExact.size(); i++) { // //System.out.println(outputExact.getItem(i, null)); // assertTrue((int) outputExact.getItem(i, null) == answer3[i]); // } for (int i = 0; i < countTimePlain.size(); i++) { // System.out.println(countTimePlain.get(i).getTime()); // System.out.println(outputPlain.getItem(i, null)); // assertTrue(countTimePlain.get(i).getTime() == answerTime[i]); assertTrue(outputPlain.getItem(i, null) == answer3[i]); } } private void timeCheck() { assertEquals(Double.valueOf(obsExactCalculate.getTimeSampleMin()), Double.valueOf(0.1)); ObservableInterface outputExact = obsExactCalculate.getComponentList() .get(0); ObservableInterface outputPlain = obsPlainCalculate.getComponentList() .get(0); List<ObservableState> countTimeExact = obsExactCalculate .getCountTimeList(); List<ObservableState> countTimePlain = obsPlainCalculate .getCountTimeList(); for (int i = 0; i < countTimeExact.size(); i++) { assertTrue((int) outputExact.getItem(i, null) == answer1[i]); } for (int i = 0; i < countTimePlain.size(); i++) { assertTrue(countTimePlain.get(i).getTime() == answerTime[i]); assertTrue(outputPlain.getItem(i, null) == answer2[i]); } } private void run(boolean isTime) { for (int i = 0; i < times.length; i++) { obsExactCalculate.calculateExactSampleObs(times[i], i + 1, isTime); obsMock1.setValue(i + 1); obsMock2.setValue(i + 1); obsPlainCalculate.calculateObs(times[i], i + 1, isTime); } } private void init(boolean isTime, int events) { obsPlainCalculate = new Observables(); obsExactCalculate = new Observables(); list1 = new LinkedList<ObservableInterface>(); list2 = new LinkedList<ObservableInterface>(); obsMock1 = new ObservableMock(connectedAgents, name, line, id, isUnique); obsMock2 = new ObservableMock(connectedAgents, name, line, id, isUnique); list1.add(obsMock1); list2.add(obsMock2); obsExactCalculate.init(fullTime, initialTime, events, points, isTime); obsPlainCalculate.init(fullTime, initialTime, events, points, isTime); obsExactCalculate.setComponentList(list1); obsPlainCalculate.setComponentList(list2); obsMock1.setValue(-1); obsMock2.setValue(-1); obsExactCalculate.addInitialState(); obsPlainCalculate.addInitialState(); } }