package tests; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.util.HashMap; import org.junit.Test; import algorithms.DataTransferModelAnalyzer; import models.Node; import models.dataFlowModel.*; import parser.Parser; import parser.exceptions.ExpectedAssignment; import parser.exceptions.ExpectedChannel; import parser.exceptions.ExpectedChannelName; import parser.exceptions.ExpectedColon; import parser.exceptions.ExpectedDoubleQuotation; import parser.exceptions.ExpectedEquals; import parser.exceptions.ExpectedInOrOutOrRefOrSubKeyword; import parser.exceptions.ExpectedLeftCurlyBracket; import parser.exceptions.ExpectedRHSExpression; import parser.exceptions.ExpectedRightBracket; import parser.exceptions.ExpectedRightCurlyBracket; import parser.exceptions.ExpectedStateTransition; import parser.exceptions.WrongJsonExpression; import parser.exceptions.WrongLHSExpression; import parser.exceptions.WrongPathExpression; import parser.exceptions.WrongRHSExpression; public class DataStorageNecessityTest { @Test public void test() { File file = new File("models/POS2.model"); HashMap<String, Boolean> exprectedNecessity = new HashMap<>(); exprectedNecessity.put("history", true); exprectedNecessity.put("total", true); exprectedNecessity.put("points", false); exprectedNecessity.put("payment", false); try { Parser parser = new Parser(new BufferedReader(new FileReader(file))); DataTransferModel model; try { model = parser.doParse(); System.out.println(model); DataFlowGraph graph = DataTransferModelAnalyzer.createDataFlowGraphWithStateStoringAttribute(model); for (Node n: graph.getNodes()) { if (n instanceof ResourceNode) { ResourceNode resource = (ResourceNode) n; if((StoreAttribute) resource.getAttribute() != null) { String resName = resource.getResourceName(); boolean necessity = ((StoreAttribute) resource.getAttribute()).isNeeded(); System.out.println(resName + ":" + necessity); assertNotNull(exprectedNecessity.get(resName)); assertEquals(necessity, exprectedNecessity.get(resName)); } } } } catch (ExpectedChannel | ExpectedChannelName | ExpectedLeftCurlyBracket | ExpectedInOrOutOrRefOrSubKeyword | ExpectedStateTransition | ExpectedEquals | ExpectedRHSExpression | WrongLHSExpression | WrongRHSExpression | ExpectedRightBracket | ExpectedAssignment | ExpectedRightCurlyBracket | WrongPathExpression | WrongJsonExpression | ExpectedColon | ExpectedDoubleQuotation e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); } } }