TestPause.java :  » Web-Framework » rife-1.6.1 » com » uwyn » rife » continuations » Java Open Source

Java Open Source » Web Framework » rife 1.6.1 
rife 1.6.1 » com » uwyn » rife » continuations » TestPause.java
/*
 * Copyright 2001-2007 Geert Bevin <gbevin[remove] at uwyn dot com>
 * Distributed under the terms of either:
 * - the common development and distribution license (CDDL), v1.0; or
 * - the GNU Lesser General Public License, v2.1 or later
 * $Id: TestPause.java 3810 2007-06-25 13:36:58Z 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
  {
    for (String testclass : new String[] {"$PauseInWhile", "$PauseInWhileInterface"})
    {
      ContinuableRunnerTest runner = new ContinuableRunnerTest();
      
      String id1 = runner.start(TestPause.class.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
  {
    for (String testclass : new String[] {"$PauseInWhile", "$PauseInWhileInterface"})
    {
      ContinuableRunnerTest runner = new ContinuableRunnerTest();
      
      String id1 = runner.start(TestPause.class.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);
    }
  }
  
  public static class PauseInWhile extends AbstractContinuableObject
  {
    public void execute()
    {
      int count = 5;
      
      while (count > 0)
      {
        pause();
        count--;
      }
    }
  }
  
  public static class PauseInWhileInterface implements ContinuableObject, ContinuableSupportAware
  {
    private ContinuableSupport mSupport;
    public void setContinuableSupport(ContinuableSupport support) { mSupport = support; }
    
    public Object clone()
    throws CloneNotSupportedException
    {
      return super.clone();
    }
    
    public void execute()
    {
      int count = 5;
      
      while (count > 0)
      {
        mSupport.pause();
        count--;
      }
    }
  }
}

java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.