package com.plectix.simulator.localviews; import static org.junit.Assert.fail; import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import com.plectix.simulator.FileNameCollectionGenerator; import com.plectix.simulator.OperationModeCollectionGenerator; import com.plectix.simulator.staticanalysis.abstracting.AbstractAgent; import com.plectix.simulator.staticanalysis.localviews.LocalViewsMain; import com.plectix.simulator.staticanalysis.subviews.AllSubViewsOfAllAgentsInterface; import com.plectix.simulator.util.ReadAndParserFile; @RunWith(value = Parameterized.class) public class TestLocalViews { private static final String prefixSourseModel = InitData.pathForSourseModel; private static final String SPLITER = " "; private static final String TOTAL = "TOTAL"; private AllSubViewsOfAllAgentsInterface subViews; private LocalViewsMain localViews; private final Map<String, Integer> amountsLocalViewsSimplexMap = new LinkedHashMap<String, Integer>(); private final Map<String, Integer> amountsLocalViewsJavaMap = new LinkedHashMap<String, Integer>(); private final InitTestLocalViews initTestLocalViews = new InitTestLocalViews(); @Parameters public static Collection<Object[]> configs() { Collection<Object[]> fileNames = FileNameCollectionGenerator .getAllFileNamesWithPathWithModifyName(prefixSourseModel, "~kappa"); return OperationModeCollectionGenerator.generate(fileNames,false); } public TestLocalViews(String count, String pathSourse, Integer opMode) throws Exception { initTestLocalViews.initializeSimulation(pathSourse, count, opMode); init(initTestLocalViews.getSourcePath()); } private void init(String soursePath) { ReadAndParserFile parser = new ReadAndParserFile(soursePath, SPLITER); parser.addTypeData("#TOTALLOCALVIEWS", amountsLocalViewsSimplexMap); parser.addTypeData("#LOCALVIEWS", amountsLocalViewsSimplexMap); parser.parseFile(); } @Before public void setUp() { subViews = initTestLocalViews.getSubViews(); initLocalViews(subViews); } private void initLocalViews(AllSubViewsOfAllAgentsInterface subViews) { if (localViews == null) { localViews = new LocalViewsMain(subViews); localViews.buildLocalViews(); } } @Test public void testLocalViews() { totalAmountLocalViewsTest(); amountLocalViewsTest(); } public void totalAmountLocalViewsTest() { // TODO: THINKING FILE SOURSE003 "TOTAL 13" in SIMPLEX. int amountlocalViewsJava = localViews.getLocalViews().size(); if (!amountsLocalViewsSimplexMap.get(TOTAL).equals( Integer.valueOf(amountlocalViewsJava))) { String errorString = "[Error] Test Total AmountLocalViews = " + amountlocalViewsJava + " | Simplex Total AmountLocalViews = " + amountsLocalViewsSimplexMap.get(TOTAL) + "\n"; fail(errorString); } } public void amountLocalViewsTest() { initAmountLocalViewsJavaMap(); StringBuffer errorStr = new StringBuffer(); for (String keyNameSimplex : amountsLocalViewsSimplexMap.keySet()) { if (keyNameSimplex.equals(TOTAL)) { continue; } if (amountsLocalViewsJavaMap.containsKey(keyNameSimplex)) { if (!amountsLocalViewsSimplexMap.get(keyNameSimplex).equals( amountsLocalViewsJavaMap.get(keyNameSimplex))) { String errorString = "[Error] LocalViews for Agent = " + keyNameSimplex + " | [file - Simplex] AmountLocalViews = " + amountsLocalViewsSimplexMap.get(keyNameSimplex) + " <> " + "[test - Java] AmountLocalViews = " + amountsLocalViewsJavaMap.get(keyNameSimplex) + "\n"; errorStr.append(errorString); } } else { String errorString = "[Error] LocalViews for Agent = " + keyNameSimplex + " AmountLocalViews = " + amountsLocalViewsSimplexMap.get(keyNameSimplex) + " > NO in JAVA \n"; errorStr.append(errorString); } } if (errorStr.length() > 0) { fail(errorStr.toString()); } } private void initAmountLocalViewsJavaMap() { Map<String, List<AbstractAgent>> localViewsJava = localViews .getLocalViews(); for (List<AbstractAgent> agents : localViewsJava.values()) { amountsLocalViewsJavaMap.put(agents.iterator().next().getName(), agents.size()); } } }