@Test public void testOrJoin() { epc = new EPC(); IFlowObject e1 = add(new Event()); IFlowObject f1 = add(new Function()); connect(e1, f1); IFlowObject e2 = add(new Event()); IFlowObject f2 = add(new Function()); connect(e2, f2); IFlowObject orJoin = add(new Connector(de.hpi.bpt.process.epc.ConnectorType.OR)); connect(f1, orJoin); connect(f2, orJoin); IFlowObject f3 = add(new Function()); connect(orJoin, f3); // Comb 1: Only e1 List<IFlowObject> startNodes = new LinkedList<IFlowObject>(); startNodes.add(e1); Marking intialMarking = Marking.getInitialMarking(epc, startNodes); List<NodeNewMarkingPair> newMarkingPairs = intialMarking.propagate(epc); assertTrue(newMarkingPairs.size() == 1); assertEquals(newMarkingPairs.get(0).node, f1); newMarkingPairs = newMarkingPairs.get(0).newMarking.propagate(epc); assertTrue(newMarkingPairs.size() == 1); assertEquals(newMarkingPairs.get(0).node, orJoin); // Comb 2: e1 + e2 // TODO }
@Test public void testOrSplit() { epc = new EPC(); IFlowObject e1 = add(new Event()); IFlowObject f1 = add(new Function()); connect(e1, f1); IFlowObject orSplit = add(new Connector(de.hpi.bpt.process.epc.ConnectorType.OR)); connect(f1, orSplit); IFlowObject f2 = add(new Function()); connect(orSplit, f2); IFlowObject f3 = add(new Function()); connect(orSplit, f3); List<IFlowObject> startNodes = new LinkedList<IFlowObject>(); startNodes.add(e1); Marking intialMarking = Marking.getInitialMarking(epc, startNodes); List<NodeNewMarkingPair> newMarkingPairs = intialMarking.propagate(epc); assertTrue(newMarkingPairs.size() == 1); assertEquals(newMarkingPairs.get(0).node, f1); newMarkingPairs = newMarkingPairs.get(0).newMarking.propagate(epc); assertTrue(newMarkingPairs.size() == 3); for (NodeNewMarkingPair nodeNewMarking : newMarkingPairs) { assertEquals(nodeNewMarking.node, orSplit); } }
@Test public void isFinalMarking() { IEPC epc = openEpcFromFile("simpleEPC.rdf"); EPCReachabilityGraph rg = new EPCReachabilityGraph(epc); rg.calculate(); for (Marking root : rg.getRoots()) { assertFalse(root.isFinalMarking(epc)); } for (Marking leaf : rg.getLeaves()) { assertTrue(leaf.isFinalMarking(epc)); } }
@Test public void testEquals() { IEPC epc = new EPC(); IControlFlow cf = epc.addControlFlow(new Event(), new Event()); cf.setId("blub"); Marking m1 = new Marking(); m1.applyContext(cf, Marking.Context.DEAD); m1.applyState(cf, Marking.State.NEG_TOKEN); Marking m2 = new Marking(); m2.applyContext(cf, Marking.Context.DEAD); m2.applyState(cf, Marking.State.NEG_TOKEN); Marking m3 = m2.clone(); m3.applyContext(cf, Marking.Context.WAIT); assertTrue(m1.equals(m2)); assertTrue(m2.equals(m1)); assertFalse(m1.equals(m3)); assertFalse(m1.equals(new Marking())); List<Marking> list = new LinkedList<Marking>(); list.add(m2); assertTrue(list.contains(m2)); assertTrue(list.contains(m1)); assertFalse(list.contains(new Marking())); assertFalse(list.contains(m3)); }