Package org.apache.wicket.request.cycle

Source Code of org.apache.wicket.request.cycle.RequestHandlerStackTest

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.wicket.request.cycle;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import org.apache.wicket.request.IRequestCycle;
import org.apache.wicket.request.IRequestHandler;
import org.apache.wicket.request.RequestHandlerStack;
import org.apache.wicket.request.Response;
import org.junit.Test;

/**
* @author Matej Knopp
*/
public class RequestHandlerStackTest extends BaseRequestHandlerStackTest
{
  private boolean testFlag1;
  private boolean testFlag2;
  private boolean testFlag3;
  private boolean testFlag4;

  private boolean detachedFlag1;
  private boolean detachedFlag2;
  private boolean detachedFlag3;
  private boolean detachedFlag4;

  private void initFlags()
  {
    testFlag1 = true;
    testFlag2 = true;
    testFlag3 = true;
    testFlag4 = true;

    detachedFlag1 = false;
    detachedFlag2 = false;
    detachedFlag3 = false;
    detachedFlag4 = false;
  }

  /** */
  @Test
  public void test1()
  {
    initFlags();

    final Response originalResponse = newResponse();
    final IRequestCycle requestCycle = newRequestCycle(originalResponse);
    final RequestHandlerStack stack = newStack(requestCycle);

    final IRequestHandler handler3 = new IRequestHandler()
    {
      @Override
      public void respond(IRequestCycle requestCycle)
      {
        testFlag3 = false;
      }

      @Override
      public void detach(IRequestCycle requestCycle)
      {
        detachedFlag3 = true;
      }
    };

    final IRequestHandler handler2 = new IRequestHandler()
    {
      @Override
      public void respond(IRequestCycle requestCycle)
      {
        testFlag2 = false;

        stack.replaceAll(handler3);

        // this code must not be executed
        testFlag2 = true;
      }

      @Override
      public void detach(IRequestCycle requestCycle)
      {
        detachedFlag2 = true;
      }
    };

    final IRequestHandler handler1 = new IRequestHandler()
    {
      @Override
      public void respond(IRequestCycle requestCycle)
      {
        testFlag1 = false;

        Response resp = newResponse();
        requestCycle.setResponse(resp);
        stack.execute(handler2);
        assertEquals(requestCycle.getResponse(), resp);

        // this code must be executed
        testFlag1 = true;
      }

      @Override
      public void detach(IRequestCycle requestCycle)
      {
        detachedFlag1 = true;
      }
    };

    stack.execute(handler1);

    assertEquals(requestCycle.getResponse(), originalResponse);

    stack.detach();

    assertFalse(testFlag1);
    assertFalse(testFlag2);
    assertFalse(testFlag3);

    assertTrue(detachedFlag1);
    assertTrue(detachedFlag2);
    assertTrue(detachedFlag3);
  }

  /** */
  @Test
  public void test2()
  {
    initFlags();

    final Response originalResponse = newResponse();
    final IRequestCycle requestCycle = newRequestCycle(originalResponse);
    final RequestHandlerStack stack = newStack(requestCycle);


    final IRequestHandler handler4 = new IRequestHandler()
    {
      @Override
      public void respond(IRequestCycle requestCycle)
      {
        testFlag4 = false;

        assertEquals(requestCycle.getResponse(), originalResponse);

        requestCycle.setResponse(newResponse());
      }

      @Override
      public void detach(IRequestCycle requestCycle)
      {
        detachedFlag4 = true;
      }
    };

    final IRequestHandler handler3 = new IRequestHandler()
    {
      @Override
      public void respond(IRequestCycle requestCycle)
      {
        testFlag3 = false;
        requestCycle.setResponse(newResponse());
        stack.replaceAll(handler4);
        // code must not be reached
        testFlag3 = true;
      }

      @Override
      public void detach(IRequestCycle requestCycle)
      {
        detachedFlag3 = true;
      }
    };

    final IRequestHandler handler2 = new IRequestHandler()
    {
      @Override
      public void respond(IRequestCycle requestCycle)
      {
        testFlag2 = false;
        requestCycle.setResponse(newResponse());
        stack.execute(handler3);
        // code must not be reached
        testFlag2 = true;
      }

      @Override
      public void detach(IRequestCycle requestCycle)
      {
        detachedFlag2 = true;
      }
    };

    IRequestHandler handler1 = new IRequestHandler()
    {
      @Override
      public void respond(IRequestCycle requestCycle)
      {
        testFlag1 = false;
        requestCycle.setResponse(newResponse());
        stack.execute(handler2);

        // code must not be reached
        testFlag1 = true;
      }

      @Override
      public void detach(IRequestCycle requestCycle)
      {
        detachedFlag1 = true;
      }
    };

    stack.execute(handler1);

    assertEquals(requestCycle.getResponse(), originalResponse);

    stack.detach();

    assertFalse(testFlag1);
    assertFalse(testFlag2);
    assertFalse(testFlag3);
    assertFalse(testFlag4);

    assertTrue(detachedFlag1);
    assertTrue(detachedFlag2);
    assertTrue(detachedFlag3);
    assertTrue(detachedFlag4);
  }

  /** */
  @Test
  public void test3()
  {
    initFlags();

    final Response originalResponse = newResponse();
    final IRequestCycle requestCycle = newRequestCycle(originalResponse);
    final RequestHandlerStack stack = newStack(requestCycle);

    final IRequestHandler handler4 = new IRequestHandler()
    {
      @Override
      public void respond(IRequestCycle requestCycle)
      {
        testFlag4 = true;

        requestCycle.setResponse(newResponse());
      }

      @Override
      public void detach(IRequestCycle requestCycle)
      {
        detachedFlag4 = true;
      }
    };

    final IRequestHandler handler3 = new IRequestHandler()
    {
      @Override
      public void respond(IRequestCycle requestCycle)
      {
        testFlag3 = false;
        stack.schedule(handler4);

        // make sure that handler4's respond method is fired after this
        // one ends
        testFlag4 = false;

        // code must be be reached
        testFlag3 = true;
      }

      @Override
      public void detach(IRequestCycle requestCycle)
      {
        detachedFlag3 = true;
      }
    };

    final IRequestHandler handler2 = new IRequestHandler()
    {
      @Override
      public void respond(IRequestCycle requestCycle)
      {
        testFlag2 = false;
        stack.execute(handler3);
        // code must be reached
        testFlag2 = true;
      }

      @Override
      public void detach(IRequestCycle requestCycle)
      {
        detachedFlag2 = true;
      }
    };

    IRequestHandler handler1 = new IRequestHandler()
    {
      @Override
      public void respond(IRequestCycle requestCycle)
      {
        testFlag1 = false;
        stack.execute(handler2);

        // code must be reached
        testFlag1 = true;
      }

      @Override
      public void detach(IRequestCycle requestCycle)
      {
        detachedFlag1 = true;
      }
    };

    stack.execute(handler1);

    assertEquals(requestCycle.getResponse(), originalResponse);

    stack.detach();

    assertTrue(testFlag1);
    assertTrue(testFlag2);
    assertTrue(testFlag3);
    assertTrue(testFlag4);

    assertTrue(detachedFlag1);
    assertTrue(detachedFlag2);
    assertTrue(detachedFlag3);
    assertTrue(detachedFlag4);
  }
}
TOP

Related Classes of org.apache.wicket.request.cycle.RequestHandlerStackTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.