package com.plectix.simulator.staticanalysis.influencemap; import static org.junit.Assert.assertTrue; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.plectix.simulator.parser.DocumentFormatException; import com.plectix.simulator.parser.IncompletesDisabledException; import com.plectix.simulator.parser.ParseErrorException; import com.plectix.simulator.staticanalysis.Agent; import com.plectix.simulator.staticanalysis.LibraryOfRules; import com.plectix.simulator.staticanalysis.Rule; import com.plectix.simulator.staticanalysis.influencemap.future.InfluenceMapWithFuture; import com.plectix.simulator.staticanalysis.subviews.MainSubViews; import com.plectix.simulator.staticanalysis.subviews.base.AbstractionRule; public class TestInfluenceMap { static LibraryOfRules library = new LibraryOfRules(); List<Rule> rules = new LinkedList<Rule>(); HashMap<Integer, List<Integer>> activations = new HashMap<Integer,List<Integer>>(); HashMap<Integer, List<Integer>> inhibitions = new HashMap<Integer,List<Integer>>(); MainSubViews subViews; @Before public void testI() throws IncompletesDisabledException, ParseErrorException, DocumentFormatException{ subViews = new MainSubViews(); } @After public void check() { subViews.constructAbstractRules(rules); List<AbstractionRule> list = subViews.getAbstractRules(); subViews.fillModelMapOfAgents(new LinkedList<Agent>(), rules); subViews.constructClasses(list); InfluenceMap im = new InfluenceMapWithFuture(); im.initInfluenceMap(list, null, null, subViews.getAgentNameToAgent()); for(Integer i: activations.keySet()){ assertTrue(concord(im.getActivationByRule(i),activations.get(i))); } for(Integer i: inhibitions.keySet()){ assertTrue(concord(im.getInhibitionByRule(i),inhibitions.get(i))); } } private boolean concord(List<Integer> list1, List<Integer> list2) { if(list1==null&&(list2==null||list2.isEmpty())) return true; if(list2==null&&list1.isEmpty()) return true; if(list1.size()!=list2.size()) return false; for(int i: list1){ if(!list2.contains(i)) return false; } return true; } @Test public void fillData() throws IncompletesDisabledException, ParseErrorException, DocumentFormatException { int i1=1; init(i1); int i2=2; init(i2); int i3=3; init(i3); int i4=4; init(i4); Rule r1 = library.getRuleByString("A(x!1),B(x!1) -> A(x),B(x)"); r1.setRuleID(i1); Rule r2 = library.getRuleByString("A(x),B(x) -> A(x!1),B(x!1)"); r2.setRuleID(i2); Rule r3 = library.getRuleByString("A(x),B(x) -> A(x!1),C(x!1)"); r3.setRuleID(i3); Rule r4 = library.getRuleByString("C(x) -> A(x),B(x)"); r4.setRuleID(i4); activations.get(i1).add(i2); activations.get(i2).add(i1); inhibitions.get(i1).add(i1); inhibitions.get(i2).add(i2); rules.add(r1); rules.add(r2); } private void init(int i) { activations.put(i, new LinkedList<Integer>()); inhibitions.put(i, new LinkedList<Integer>()); } }