/******************************************************************************* * Copyright (c) 2002-2006 Innoopract Informationssysteme GmbH. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Innoopract Informationssysteme GmbH - initial API and implementation ******************************************************************************/ package com.w4t; import java.util.Date; import junit.framework.TestCase; import com.w4t.event.WebContainerEvent; import com.w4t.event.WebContainerListener; /** * <p> * Tests functionalities in com.w4tWebContainer. * </p> */ public class WebContainer_Test extends TestCase { public WebContainer_Test( final String name ) { super( name ); } protected void setUp() throws Exception { W4TFixture.setUp(); W4TFixture.createContext(); } protected void tearDown() throws Exception { W4TFixture.tearDown(); W4TFixture.removeContext(); } // testing methods ////////////////// public void testClone() throws Exception { CloneMe cm = new CloneMe(); CloneMe cmClone = ( CloneMe )cm.clone(); assertTrue( cmClone.wbt != null ); assertTrue( cm.wbt != cmClone.wbt ); } public void testContainerObserver() throws Exception { WebPanel panel = new WebPanel(); doTestContainerObserver( panel ); WebForm form = new WebContainer_Test.TestForm(); form.setWebLayout( new WebFlowLayout() ); doTestContainerObserver( form ); } private void doTestContainerObserver( final WebContainer panel ) throws Exception { final WebLabel label = new WebLabel(); final WebGridLayout layout = new WebGridLayout(); final boolean[] eventTriggeredList = new boolean[ 3 ]; panel.addWebContainerListener( new WebContainerListener() { public void webComponentAdded( final WebContainerEvent evt ) { eventTriggeredList[ 0 ] = true; assertTrue( evt.getChild() == label ); } public void webComponentRemoved( final WebContainerEvent evt ) { eventTriggeredList[ 1 ] = true; assertTrue( evt.getChild() == label ); } public void webLayoutChanged( final WebContainerEvent evt ) { eventTriggeredList[ 2 ] = true; assertTrue( evt.getWebLayout() == layout ); } } ); panel.add( label ); assertTrue( "wrong count of components", panel.get().length == 1 ); panel.remove( label ); assertTrue( "wrong count of components", panel.get().length == 0 ); panel.setWebLayout( layout ); assertTrue( "component not added", eventTriggeredList[ 0 ] ); assertTrue( "component not removed", eventTriggeredList[ 1 ] ); assertTrue( "layout not changed", eventTriggeredList[ 2 ] ); } public void testComponentAddition() throws Exception { WebContainer container1 = new WebPanel(); WebButton button = new WebButton(); container1.add( button ); WebContainer container2 = new WebPanel(); try { container2.add( button ); fail(); } catch( IllegalArgumentException iae ) { } } // inner classes //////////////// private class CloneMe extends WebPanel { private WebButton wbt = new WebButton( new Date().toString() ); private CloneMe() throws Exception { add( wbt ); } } private class TestForm extends WebForm { protected void setWebComponents() throws Exception { } } }