/*******************************************************************************
* 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.util;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import com.w4t.*;
import com.w4t.dhtml.*;
public class ComponentTreeVisitor_Test extends TestCase {
private WebForm form;
private WebButton button;
private WebPanel panel;
private WebScrollPane scrollPane;
private WebText text;
private TreeView treeView;
private TreeNode treeNode;
private TreeNode treeNode1;
private TreeNode treeNode11;
private TreeLeaf treeLeaf111;
private TreeNode treeNode2;
private TreeLeaf treeLeaf2;
protected void setUp() throws Exception {
W4TFixture.setUp();
W4TFixture.createContext();
form = new WebForm() {
protected void setWebComponents() throws Exception {
}
};
form.setWebLayout( new WebFlowLayout() );
button = new WebButton();
form.add( button );
panel = new WebPanel();
form.add( panel );
scrollPane = new WebScrollPane();
panel.add( scrollPane );
text = new WebText();
panel.add( text );
treeView = new TreeView();
treeNode = new TreeNode();
treeView.addItem( treeNode );
treeNode1 = new TreeNode();
treeNode.addItem( treeNode1 );
treeNode11 = new TreeNode();
treeNode1.addItem( treeNode11 );
treeLeaf111 = new TreeLeaf();
treeNode11.addItem( treeLeaf111 );
treeNode2 = new TreeNode();
treeNode.addItem( treeNode2 );
treeLeaf2 = new TreeLeaf();
treeNode2.addItem( treeLeaf2 );
form.add( treeView );
}
protected void tearDown() {
W4TFixture.tearDown();
W4TFixture.removeContext();
}
public void testBreadthFirstTreeVisiting() throws Exception {
final List log = new ArrayList();
int strategy = ComponentTreeVisitor.STRATEGY_BREADTH_FIRST;
ComponentTreeVisitor.accept( form, strategy, new ComponentTreeVisitor() {
public boolean visit( final WebComponent leaf ) {
log.add( leaf );
return true;
}
public boolean visit( final WebContainer container ) {
log.add( container );
return true;
}
public boolean visit( final Decorator decorator ) {
log.add( decorator );
return true;
}
public boolean visit( final Node node ) {
log.add( node );
return true;
}
} );
assertEquals( 13, log.size() );
assertSame( form, log.get( 0 ) );
assertSame( button, log.get( 1 ) );
assertSame( panel, log.get( 2 ) );
assertSame( treeView, log.get( 3 ) );
assertSame( scrollPane, log.get( 4 ) );
assertSame( text, log.get( 5 ) );
assertSame( treeNode, log.get( 6 ) );
assertSame( scrollPane.getContent(), log.get( 7 ) );
assertSame( treeNode1, log.get( 8 ) );
assertSame( treeNode2, log.get( 9 ) );
assertSame( treeNode11, log.get( 10 ) );
assertSame( treeLeaf2, log.get( 11 ) );
assertSame( treeLeaf111, log.get( 12 ) );
log.clear();
ComponentTreeVisitor.accept( form, strategy, new ComponentTreeVisitor() {
public boolean visit( final WebComponent leaf ) {
log.add( leaf );
return true;
}
public boolean visit( final WebContainer container ) {
log.add( container );
return true;
}
public boolean visit( final Decorator decorator ) {
log.add( decorator );
return false;
}
public boolean visit( final Node node ) {
log.add( node );
return true;
}
} );
assertEquals( 12, log.size() );
assertSame( form, log.get( 0 ) );
assertSame( button, log.get( 1 ) );
assertSame( panel, log.get( 2 ) );
assertSame( treeView, log.get( 3 ) );
assertSame( scrollPane, log.get( 4 ) );
assertSame( text, log.get( 5 ) );
assertSame( treeNode, log.get( 6 ) );
assertSame( treeNode1, log.get( 7 ) );
assertSame( treeNode2, log.get( 8 ) );
assertSame( treeNode11, log.get( 9 ) );
assertSame( treeLeaf2, log.get( 10 ) );
assertSame( treeLeaf111, log.get( 11 ) );
log.clear();
ComponentTreeVisitor.accept( form, strategy, new ComponentTreeVisitor() {
public boolean visit( final WebComponent leaf ) {
log.add( leaf );
return true;
}
public boolean visit( final WebContainer container ) {
log.add( container );
return container instanceof WebForm;
}
public boolean visit( final Decorator decorator ) {
log.add( decorator );
return false;
}
public boolean visit( final Node node ) {
log.add( node );
return true;
}
} );
assertEquals( 10, log.size() );
assertSame( form, log.get( 0 ) );
assertSame( button, log.get( 1 ) );
assertSame( panel, log.get( 2 ) );
assertSame( treeView, log.get( 3 ) );
assertSame( treeNode, log.get( 4 ) );
assertSame( treeNode1, log.get( 5 ) );
assertSame( treeNode2, log.get( 6 ) );
assertSame( treeNode11, log.get( 7 ) );
assertSame( treeLeaf2, log.get( 8 ) );
assertSame( treeLeaf111, log.get( 9 ) );
log.clear();
ComponentTreeVisitor.accept( form, strategy, new ComponentTreeVisitor() {
public boolean visit( final WebComponent leaf ) {
log.add( leaf );
return true;
}
public boolean visit( final WebContainer container ) {
log.add( container );
return true;
}
public boolean visit( final Decorator decorator ) {
log.add( decorator );
return true;
}
public boolean visit( final Node node ) {
log.add( node );
return false;
}
} );
assertEquals( 7, log.size() );
assertSame( form, log.get( 0 ) );
assertSame( button, log.get( 1 ) );
assertSame( panel, log.get( 2 ) );
assertSame( treeView, log.get( 3 ) );
assertSame( scrollPane, log.get( 4 ) );
assertSame( text, log.get( 5 ) );
assertSame( scrollPane.getContent(), log.get( 6 ) );
}
public void testDepthFirstTreeVisiting() throws Exception {
final List log = new ArrayList();
ComponentTreeVisitor.accept( form, new ComponentTreeVisitor() {
public boolean visit( final WebComponent leaf ) {
log.add( leaf );
return true;
}
public boolean visit( final WebContainer container ) {
log.add( container );
return true;
}
public boolean visit( final Decorator decorator ) {
log.add( decorator );
return true;
}
public boolean visit( final Node node ) {
log.add( node );
return true;
}
} );
assertEquals( 13, log.size() );
assertSame( form, log.get( 0 ) );
assertSame( button, log.get( 1 ) );
assertSame( panel, log.get( 2 ) );
assertSame( scrollPane, log.get( 3 ) );
assertSame( scrollPane.getContent(), log.get( 4 ) );
assertSame( text, log.get( 5 ) );
assertSame( treeView, log.get( 6 ) );
assertSame( treeNode, log.get( 7 ) );
assertSame( treeNode1, log.get( 8 ) );
assertSame( treeNode11, log.get( 9 ) );
assertSame( treeLeaf111, log.get( 10 ) );
assertSame( treeNode2, log.get( 11 ) );
assertSame( treeLeaf2, log.get( 12 ) );
log.clear();
ComponentTreeVisitor.accept( form, new ComponentTreeVisitor() {
public boolean visit( final WebComponent leaf ) {
log.add( leaf );
return true;
}
public boolean visit( final WebContainer container ) {
log.add( container );
return true;
}
public boolean visit( final Decorator decorator ) {
log.add( decorator );
return false;
}
public boolean visit( final Node node ) {
log.add( node );
return true;
}
} );
assertEquals( 12, log.size() );
assertSame( form, log.get( 0 ) );
assertSame( button, log.get( 1 ) );
assertSame( panel, log.get( 2 ) );
assertSame( scrollPane, log.get( 3 ) );
assertSame( text, log.get( 4 ) );
assertSame( treeView, log.get( 5 ) );
assertSame( treeNode, log.get( 6 ) );
assertSame( treeNode1, log.get( 7 ) );
assertSame( treeNode11, log.get( 8 ) );
assertSame( treeLeaf111, log.get( 9 ) );
assertSame( treeNode2, log.get( 10 ) );
assertSame( treeLeaf2, log.get( 11 ) );
log.clear();
ComponentTreeVisitor.accept( form, new ComponentTreeVisitor() {
public boolean visit( final WebComponent leaf ) {
log.add( leaf );
return true;
}
public boolean visit( final WebContainer container ) {
log.add( container );
return container instanceof WebForm;
}
public boolean visit( final Decorator decorator ) {
log.add( decorator );
return false;
}
public boolean visit( final Node node ) {
log.add( node );
return true;
}
} );
assertEquals( 10, log.size() );
assertSame( form, log.get( 0 ) );
assertSame( button, log.get( 1 ) );
assertSame( panel, log.get( 2 ) );
assertSame( treeView, log.get( 3 ) );
assertSame( treeNode, log.get( 4 ) );
assertSame( treeNode1, log.get( 5 ) );
assertSame( treeNode11, log.get( 6 ) );
assertSame( treeLeaf111, log.get( 7 ) );
assertSame( treeNode2, log.get( 8 ) );
assertSame( treeLeaf2, log.get( 9 ) );
log.clear();
ComponentTreeVisitor.accept( form, new ComponentTreeVisitor() {
public boolean visit( final WebComponent leaf ) {
log.add( leaf );
return true;
}
public boolean visit( final WebContainer container ) {
log.add( container );
return true;
}
public boolean visit( final Decorator decorator ) {
log.add( decorator );
return true;
}
public boolean visit( final Node node ) {
log.add( node );
return false;
}
} );
assertEquals( 7, log.size() );
assertSame( form, log.get( 0 ) );
assertSame( button, log.get( 1 ) );
assertSame( panel, log.get( 2 ) );
assertSame( scrollPane, log.get( 3 ) );
assertSame( scrollPane.getContent(), log.get( 4 ) );
assertSame( text, log.get( 5 ) );
assertSame( treeView, log.get( 6 ) );
}
}