1   /*
2    * $Id: TransitionTest.java 1309 2009-05-22 18:56:38Z andreas.hoheisel@first.fraunhofer.de $
3    *
4    * Copyright (c) 2005, The K-Wf Grid Consortium
5    * Fraunhofer Institute for Computer Architecture and Software Technology
6    * See http://www.kwfgrid.eu and http://www.first.fraunhofer.de for more details.
7    */
8   package net.kwfgrid.gworkflowdl;
9   
10  
11  import junit.framework.Assert;
12  import junit.framework.Test;
13  import junit.framework.TestSuite;
14  import net.kwfgrid.gworkflowdl.structure.*;
15  
16  /***
17   * Edge test.
18   */
19  public final class TransitionTest extends AbstractTestCase {
20      /***
21       * Create the test case.
22       *
23       * @param testName name of the test case
24       */
25      public TransitionTest(String testName) {
26          super(testName);
27      }
28  
29      /***
30       * @return the suite of tests being tested
31       */
32      public static Test suite() {
33          return new TestSuite(TransitionTest.class);
34      }
35  
36      public static void addReadPlace(Transition t, Place p) {
37          Edge e = Factory.newEdge();
38          e.setPlace(p);
39          t.addReadEdge(e);
40      }
41  
42      public static void addInPlace(Transition t, Place p) {
43          Edge e = Factory.newEdge();
44          e.setPlace(p);
45          t.addInEdge(e);
46      }
47  
48      public static void addWritePlace(Transition t, Place p) {
49          Edge e = Factory.newEdge();
50          e.setPlace(p);
51          t.addWriteEdge(e);
52      }
53  
54      public static void addOutPlace(Transition t, Place p) {
55          Edge e = Factory.newEdge();
56          e.setPlace(p);
57          t.addOutEdge(e);
58      }
59      /***
60       * generation of AnalysisTransition test createDataToken
61       *
62       * @param description expression of Edge
63       * @param id          Place ID
64       * @param inP         Places of inEdges
65       * @param outP        Places of outEdges
66       * @return createDataToken AnalysisTransition
67       */
68      public static Transition example(String description, String id, Place[] readP, Place[] inP, Place[] writeP, Place[] outP) {
69          Transition t = Factory.newTransition();
70  
71          t.setID(id);
72          t.setDescription(description);
73  
74          Edge[] readEdges = new Edge[readP.length];
75          for (int i = 0; i < readP.length; i++) {
76              readEdges[i] = EdgeTest.example(description + ".read." + i, readP[i]);
77          }
78          t.setReadEdges(readEdges);
79  
80          Edge[] inEdges = new Edge[inP.length];
81          for (int i = 0; i < inP.length; i++) {
82              inEdges[i] = EdgeTest.example(description + ".in." + i, inP[i]);
83          }
84          t.setInEdges(inEdges);
85  
86          Edge[] writeEdges = new Edge[writeP.length];
87          for (int i = 0; i < writeP.length; i++) {
88              writeEdges[i] = EdgeTest.example(description + ".write." + i, writeP[i]);
89          }
90          t.setWriteEdges(writeEdges);
91  
92          Edge[] outEdges = new Edge[outP.length];
93          for (int i = 0; i < outP.length; i++) {
94              outEdges[i] = EdgeTest.example(description + ".out." + i, outP[i]);
95          }
96          t.setOutEdges(outEdges);
97  
98          return t;
99      }
100 
101 
102     /***
103      * Rigourous Test :-).
104      */
105     public void testApp() {
106         Transition t = Factory.newTransition();
107 
108         Assert.assertEquals(t.getID(), Transition.DEFAULT_ID);
109         Assert.assertEquals(t.getDescription(), Transition.DEFAULT_DESCRIPTION);
110         Assert.assertEquals(t.getInEdges().length, Transition.DEFAULT_EDGE_NUMBER);
111         Assert.assertEquals(t.getOutEdges().length, Transition.DEFAULT_EDGE_NUMBER);
112         Assert.assertEquals(t.getStatus(), Transition.DEFAULT_STATUS);
113 
114         t.setID("anton");
115         Assert.assertEquals("anton", t.getID());
116         Assert.assertEquals(t.getAbstractionLevel(), Operation.BLACK);
117 
118         // test description
119         Assert.assertEquals(t.getDescription(), Transition.DEFAULT_DESCRIPTION);
120         t.setDescription("berta");
121         Assert.assertEquals("berta", t.getDescription());
122 
123         // test inEdges
124         Edge in0 = EdgeTest.example("in0", "place0", 0);
125         Edge in1 = EdgeTest.example("in1", "place1", 1);
126         Edge in2 = EdgeTest.example("in2", "place2", 2);
127         Edge[] inEdges = {in0, in1, in2};
128 
129         Edge[] in = t.getInEdges();
130         Assert.assertEquals(in.length, 0);
131 
132         t.setInEdges(inEdges);
133         in = t.getInEdges();
134         Assert.assertEquals(in.length, 3);
135 
136         Edge e = t.getInEdge("place1");
137         Assert.assertEquals("place1", e.getPlace().getID());
138 
139         t.removeInEdge("place1");
140         in = t.getInEdges();
141         Assert.assertEquals(in.length, 2);
142         Assert.assertFalse("place1".equals(in[0].getPlace().getID()));
143         Assert.assertFalse("place1".equals(in[1].getPlace().getID()));
144 
145         t.addInEdge(in1);
146         in = t.getInEdges();
147         Assert.assertEquals(in.length, 3);
148         Assert.assertFalse(null == t.getInEdge("place0"));
149         Assert.assertFalse(null == t.getInEdge("place1"));
150         Assert.assertFalse(null == t.getInEdge("place2"));
151 
152         // test Edges
153         Edge out0 = EdgeTest.example("out0", "place0", 0);
154         Edge out1 = EdgeTest.example("out1", "place1", 1);
155         Edge out2 = EdgeTest.example("out2", "place2", 2);
156         Edge[] outEdges = {out0, out1, out2};
157 
158         Edge[] out = t.getOutEdges();
159         Assert.assertEquals(out.length, 0);
160 
161         t.setOutEdges(outEdges);
162         out = t.getOutEdges();
163         Assert.assertEquals(out.length, 3);
164 
165         e = t.getOutEdge("place1");
166         Assert.assertEquals("place1", e.getPlace().getID());
167 
168         t.removeOutEdge("place1");
169         out = t.getOutEdges();
170         Assert.assertEquals(out.length, 2);
171         Assert.assertFalse("place1".equals(out[0].getPlace().getID()));
172         Assert.assertFalse("place1".equals(out[1].getPlace().getID()));
173 
174         t.addOutEdge(in1);
175         out = t.getOutEdges();
176         Assert.assertEquals(out.length, 3);
177         Assert.assertFalse(null == t.getOutEdge("place0"));
178         Assert.assertFalse(null == t.getOutEdge("place1"));
179         Assert.assertFalse(null == t.getOutEdge("place2"));
180 
181         // test Operation
182         Assert.assertEquals(t.getOperation(), null);
183         t.setOperation(OperationTest.example("ANTON", 0));
184         Assert.assertEquals("Abstraction level", Operation.RED, t.getAbstractionLevel());
185         Operation op = t.getOperation();
186       
187 
188         // test Condition
189         Assert.assertEquals(0, t.getConditions().length);
190         t.addCondition("feeling fine");
191         Assert.assertEquals(1, t.getConditions().length);
192         Assert.assertEquals("feeling fine", t.getConditions()[0]);
193 
194         // test statusAssert.assertEquals(first.getStatus(), AnalysisTransition.STATUS_DEFAULT);
195 
196         t.setStatus(Transition.DEFAULT_STATUS);
197         Assert.assertEquals(Transition.DEFAULT_STATUS, t.getStatus());
198 
199     }
200 }