/* * Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com> * Licensed under the Apache License, Version 2.0 (the "License") * $Id: TestPause.java 3941 2008-04-26 21:28:32Z gbevin $ */ package com.uwyn.rife.continuations; import junit.framework.TestCase; public class TestPause extends TestCase { public TestPause(String name) { super(name); } public void testPauseInWhile() throws Throwable { final String[] testclasses = new String[] {"TestPauseInWhile", "TestPauseInWhileInterface"}; for (int i = 0; i < testclasses.length; i++) { final String testclass = testclasses[i]; ContinuableRunnerTest runner = new ContinuableRunnerTest(); String id1 = runner.start(TestPause.class.getPackage().getName() + "." + testclass); assertNotNull(id1); ContinuationContext context1 = runner.getManager().getContext(id1); assertEquals(5, context1.getLocalVars().getInt(1)); String id2 = runner.resume(id1); assertNotNull(id2); assertFalse(id1.equals(id2)); ContinuationContext context2 = runner.getManager().getContext(id2); assertEquals(4, context2.getLocalVars().getInt(1)); String id3 = runner.resume(id2); assertNotNull(id3); assertFalse(id1.equals(id3)); assertFalse(id2.equals(id3)); ContinuationContext context3 = runner.getManager().getContext(id3); assertEquals(3, context3.getLocalVars().getInt(1)); String id4 = runner.resume(id3); assertNotNull(id4); assertFalse(id1.equals(id4)); assertFalse(id2.equals(id4)); assertFalse(id3.equals(id4)); ContinuationContext context4 = runner.getManager().getContext(id4); assertEquals(2, context4.getLocalVars().getInt(1)); String id5 = runner.resume(id4); assertNotNull(id5); assertFalse(id1.equals(id5)); assertFalse(id2.equals(id5)); assertFalse(id3.equals(id5)); assertFalse(id4.equals(id5)); ContinuationContext context5 = runner.getManager().getContext(id5); assertEquals(1, context5.getLocalVars().getInt(1)); String id6 = runner.resume(id5); assertNull(id6); } } public void testPauseInWhileClones() throws Throwable { final String[] testclasses = new String[] {"TestPauseInWhile", "TestPauseInWhileInterface"}; for (int i = 0; i < testclasses.length; i++) { final String testclass = testclasses[i]; ContinuableRunnerTest runner = new ContinuableRunnerTest(); String id1 = runner.start(TestPause.class.getPackage().getName() + "." + testclass); assertNotNull(id1); ContinuationContext context1 = runner.getManager().getContext(id1); assertEquals(5, context1.getLocalVars().getInt(1)); String id2a = runner.resume(id1); assertNotNull(id2a); ContinuationContext context2 = runner.getManager().getContext(id2a); assertEquals(4, context2.getLocalVars().getInt(1)); String id3aa = runner.resume(id2a); assertNotNull(id3aa); ContinuationContext context3aa = runner.getManager().getContext(id3aa); assertEquals(3, context3aa.getLocalVars().getInt(1)); String id4aa = runner.resume(id3aa); assertNotNull(id4aa); ContinuationContext context4aa = runner.getManager().getContext(id4aa); assertEquals(2, context4aa.getLocalVars().getInt(1)); String id2b = runner.resume(id1); assertNotNull(id2b); assertFalse(id2a.equals(id2b)); ContinuationContext context2b = runner.getManager().getContext(id2b); assertEquals(4, context2.getLocalVars().getInt(1)); String id3ab = runner.resume(id2a); assertNotNull(id3ab); assertFalse(id3aa.equals(id3ab)); ContinuationContext context3ab = runner.getManager().getContext(id3ab); assertEquals(3, context3ab.getLocalVars().getInt(1)); String id5aa = runner.resume(id4aa); assertNotNull(id5aa); ContinuationContext context5aa = runner.getManager().getContext(id5aa); assertEquals(1, context5aa.getLocalVars().getInt(1)); String id3b = runner.resume(id2b); assertNotNull(id3b); assertFalse(id3aa.equals(id3b)); assertFalse(id3ab.equals(id3b)); ContinuationContext context3b = runner.getManager().getContext(id3b); assertEquals(3, context3b.getLocalVars().getInt(1)); String id4ab = runner.resume(id3ab); assertNotNull(id4ab); assertFalse(id4aa.equals(id4ab)); ContinuationContext context4ab = runner.getManager().getContext(id4ab); assertEquals(2, context4ab.getLocalVars().getInt(1)); String id4b = runner.resume(id3b); assertNotNull(id4b); assertFalse(id4aa.equals(id4b)); assertFalse(id4ab.equals(id4b)); ContinuationContext context4b = runner.getManager().getContext(id4b); assertEquals(2, context4b.getLocalVars().getInt(1)); String id6aa = runner.resume(id5aa); assertNull(id6aa); String id5b = runner.resume(id4b); assertNotNull(id5b); assertFalse(id5aa.equals(id5b)); ContinuationContext context5b = runner.getManager().getContext(id5b); assertEquals(1, context5b.getLocalVars().getInt(1)); String id5ab = runner.resume(id4ab); assertNotNull(id5ab); assertFalse(id5aa.equals(id5ab)); assertFalse(id5b.equals(id5ab)); ContinuationContext context5ab = runner.getManager().getContext(id5ab); assertEquals(1, context5ab.getLocalVars().getInt(1)); String id6ab = runner.resume(id5ab); assertNull(id6ab); String id6b = runner.resume(id5b); assertNull(id6b); } } }