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.SimpleSerializable;
6
7 public abstract class AbstractResumeTestCase extends AbstractTransformerTestCase {
8
9 public void testSimpleSuspendResume() throws Exception {
10 final SimpleSerializable r = new SimpleSerializable();
11 assertTrue(r.g == -1);
12 assertTrue(r.l == -1);
13 Continuation c1 = Continuation.startWith(r);
14 assertNotNull(c1);
15 assertTrue(r.g == 0);
16 assertTrue(r.l == 0);
17 Continuation c2 = Continuation.continueWith(c1);
18 assertNotNull(c2);
19 assertTrue(r.g == 1);
20 assertTrue(r.l == 1);
21 Continuation c3 = Continuation.continueWith(c2);
22 assertNotNull(c3);
23 assertTrue(r.g == 2);
24 assertTrue(r.l == 2);
25 }
26
27
28 public void testContinuationBranching() throws Exception {
29 final SimpleSerializable r = new SimpleSerializable();
30 assertTrue(r.g == -1);
31 assertTrue(r.l == -1);
32 Continuation c1 = Continuation.startWith(r);
33 assertNotNull(c1);
34 assertTrue(r.g == 0);
35 assertTrue(r.l == 0);
36 Continuation c2 = Continuation.continueWith(c1);
37 assertNotNull(c2);
38 assertTrue(r.g == 1);
39 assertTrue(r.l == 1);
40 Continuation c31 = Continuation.continueWith(c2);
41 assertNotNull(c31);
42 assertTrue(r.g == 2);
43 assertTrue(r.l == 2);
44 Continuation c32 = Continuation.continueWith(c2);
45 assertNotNull(c32);
46 assertTrue(r.g == 3);
47 assertTrue(r.l == 2);
48 }
49 }