1   package org.apache.commons.javaflow.bytecode.transformation.tests;
2   
3   import org.apache.commons.javaflow.Continuation;
4   import org.apache.commons.javaflow.bytecode.transformation.AbstractTransformerTestCase;
5   import org.apache.commons.javaflow.bytecode.transformation.rewrite.Simple;
6   import org.apache.commons.javaflow.bytecode.transformation.rewrite.SimpleSynchronized;
7   import org.apache.commons.javaflow.bytecode.transformation.rewrite.SimpleTryCatch;
8   
9   public abstract class AbstractSimpleTestCase extends AbstractTransformerTestCase {
10  
11      public void testSimpleSuspend() throws Exception {
12          final Simple r = new Simple();
13          final Continuation c = Continuation.startWith(r);
14          assertTrue(c != null);
15      }
16  
17      public void testSimpleTryCatchWithoutException() throws Exception {
18          final SimpleTryCatch r = new SimpleTryCatch(false);
19          Continuation c;
20  
21          c = Continuation.startWith(r);
22          assertTrue(c != null);
23          assertTrue(r.a);
24          assertFalse(r.b);
25          assertFalse(r.c);
26          assertFalse(r.d);
27          assertFalse(r.e);
28          assertFalse(r.f);
29  
30          c = Continuation.continueWith(c);
31          assertTrue(c != null);
32          assertTrue(r.a);
33          assertTrue(r.b);
34          assertFalse(r.c);
35          assertFalse(r.d);
36          assertTrue(r.e);
37          assertFalse(r.f);
38  
39          c = Continuation.continueWith(c);
40          assertTrue(c != null);
41          assertTrue(r.a);
42          assertTrue(r.b);
43          assertFalse(r.c);
44          assertFalse(r.d);
45          assertTrue(r.e);
46          assertTrue(r.f);    
47      }
48  
49      public void testSimpleTryCatchWithException() throws Exception {
50          final SimpleTryCatch r = new SimpleTryCatch(true);
51          Continuation c;
52  
53          c = Continuation.startWith(r);
54          assertTrue(c != null);
55          assertTrue(r.a);
56          assertFalse(r.b);
57          assertFalse(r.c);
58          assertFalse(r.d);
59          assertFalse(r.e);
60          assertFalse(r.f);
61  
62          c = Continuation.continueWith(c);
63          assertTrue(c != null);
64          assertTrue(r.a);
65          assertFalse(r.b);
66          assertTrue(r.c);
67          assertFalse(r.d);
68          assertFalse(r.e);
69          assertFalse(r.f);
70  
71          c = Continuation.continueWith(c);
72          assertTrue(c != null);
73          assertTrue(r.a);
74          assertTrue(r.b);
75          assertFalse(r.c);
76          assertFalse(r.d);
77          assertTrue(r.e);
78          assertTrue(r.f);    
79      }
80  
81      public void testSimpleSynchronized() throws Exception {
82          final SimpleSynchronized r = new SimpleSynchronized();
83          Continuation c;
84  
85          c = Continuation.startWith(r);
86          assertTrue(c != null);
87          assertTrue(r.a);
88          assertFalse(r.b);
89          assertFalse(r.c);
90          assertFalse(r.d);
91          assertFalse(r.e);
92          assertFalse(r.f);
93  
94          c = Continuation.continueWith(c);
95          assertTrue(c != null);
96          assertTrue(r.a);
97          assertTrue(r.b);
98          assertTrue(r.c);
99          assertFalse(r.d);
100         assertFalse(r.e);
101         assertFalse(r.f);
102 
103         c = Continuation.continueWith(c);
104         assertTrue(c != null);
105         assertTrue(r.a);
106         assertTrue(r.b);
107         assertTrue(r.c);
108         assertTrue(r.d);
109         assertTrue(r.e);
110         assertFalse(r.f);
111 
112         c = Continuation.continueWith(c);
113         assertTrue(c != null);
114         assertTrue(r.a);
115         assertTrue(r.b);
116         assertTrue(r.c);
117         assertTrue(r.d);
118         assertTrue(r.e);
119         assertTrue(r.f);
120     }
121 }