package com.plectix.simulator.xmlmap; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.File; import java.util.ArrayList; import java.util.Collection; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.junit.Assert; 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 org.xml.sax.InputSource; import com.plectix.simulator.FileNameCollectionGenerator; import com.plectix.simulator.OperationModeCollectionGenerator; import com.plectix.simulator.util.io.StringBufferReader; @RunWith(value = Parameterized.class) public class TestInfluenceMap { private static final String separator = File.separator; private static final String prefixSourseModel = "test.data" + separator + "influenceMap" + separator + "model" + separator; private SAXParserFactory parserFactory; private SAXParser parserxml; private File sessionSimplex; private SAXHandler handler; private ArrayList<Node> nodesComplex; private ArrayList<Node> nodesJava; private ArrayList<Connection> connectionsComplex; private ArrayList<Connection> connectionsJava; private static String currentXMLData; private final InitTestInfluenceMap initTestInfluenceMap = new InitTestInfluenceMap(); @Parameters public static Collection<Object[]> configs() { return OperationModeCollectionGenerator.generate( FileNameCollectionGenerator .getAllFileNamesWithPathWithModifyName( prefixSourseModel, "~kappa"), false); } public TestInfluenceMap(String count, String patch, Integer opMode) throws Exception { currentXMLData = initTestInfluenceMap.generateXML(patch, count, opMode); } @Before public void prepare() { parserFactory = SAXParserFactory.newInstance(); try { sessionSimplex = new File(initTestInfluenceMap.getComparePath()); parserxml = parserFactory.newSAXParser(); handler = new SAXHandler(); parserxml.parse(sessionSimplex, handler); nodesComplex = handler.getNodes(); connectionsComplex = handler.getConnections(); parserxml.parse(new InputSource(new StringBufferReader( currentXMLData)), handler); nodesJava = handler.getNodes(); connectionsJava = handler.getConnections(); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } } @Test public void testNodesInfluenceMap() { Assert.assertEquals("[Error] Nodes in XML (JAVA,SIMPLEX) ", nodesJava .size(), nodesComplex.size()); StringBuffer errors = new StringBuffer(); for (Node node : nodesComplex) { if (!contains(node, nodesJava)) errors.append("there is no Node = '" + node.getName() + "' > in Java \n"); } if (errors.length() > 0) { fail(errors.toString()); return; } errors = new StringBuffer(); if (connectionsJava.size() != connectionsComplex.size()) { System.err.println(connectionsJava.size() + " " + connectionsComplex.size()); } Assert.assertEquals("[Error] Connectiones in XML (JAVA,SIMPLEX) ", connectionsJava.size(), connectionsComplex.size()); for (Connection connection : connectionsComplex) { if (!contains(connection, connectionsJava)) errors.append("there is no connection \n < connection " + "fromNode = " + connection.getFromNode() + " toNode = " + connection.getToNode() + " with Relation = " + connection.getRelation() + " > in Java \n"); } if (errors.length() > 0) { System.err.println(errors.toString()); assertTrue(false); } } private boolean contains(Connection connection, ArrayList<Connection> list) { for (Connection c : list) { if (c.equals(connection)) { list.remove(connection); return true; } } return false; } private boolean contains(Node node, ArrayList<Node> list) { for (Node n : list) { if (n.equals(node)) { list.remove(n); return true; } } return false; } }