Author: ivaynberg
Date: Mon Mar 22 16:16:17 2010
New Revision: 926153

URL: http://svn.apache.org/viewvc?rev=926153&view=rev
Log:
visitor tests

Added:
    
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/VisitorTest.java
   (with props)

Added: 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/VisitorTest.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/VisitorTest.java?rev=926153&view=auto
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/VisitorTest.java
 (added)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/VisitorTest.java
 Mon Mar 22 16:16:17 2010
@@ -0,0 +1,157 @@
+/*
+ * 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;
+
+import junit.framework.Assert;
+
+import org.apache.wicket.Component.IVisitor;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.FormComponent;
+
+/**
+ * <code>
+ * A
+ * +-B
+ * +-C
+ * | +-D
+ * | +-E
+ * |   +-F
+ * +-G
+ * </code>
+ * 
+ * @author igor.vaynberg
+ */
+public class VisitorTest extends WicketTestCase
+{
+
+       public void testContinueTraversal()
+       {
+               final StringBuilder path = new StringBuilder();
+
+               TestContainer container = new TestContainer();
+               container.visitChildren(new IVisitor<Component>()
+               {
+                       public Object component(Component component)
+                       {
+                               path.append(component.getId());
+                               return CONTINUE_TRAVERSAL;
+                       }
+               });
+
+               Assert.assertEquals("BCDEFG", path.toString());
+       }
+
+       public void testContinuePostOrder()
+       {
+               final StringBuilder path = new StringBuilder();
+
+               TestContainer container = new TestContainer();
+               FormComponent.visitComponentsPostOrder(container, new 
IVisitor<Component>()
+               {
+                       public Object component(Component component)
+                       {
+                               path.append(component.getId());
+                               return CONTINUE_TRAVERSAL;
+                       }
+               });
+
+               Assert.assertEquals("BDFECGA", path.toString());
+       }
+
+       public void testDoNotGoDeeper1()
+       {
+               final StringBuilder path = new StringBuilder();
+
+               TestContainer container = new TestContainer();
+               Object result = container.visitChildren(new 
IVisitor<Component>()
+               {
+                       public Object component(Component component)
+                       {
+                               path.append(component.getId());
+                               if ("D".equals(component.getId()))
+                               {
+                                       return "RESULT";
+                               }
+                               return CONTINUE_TRAVERSAL;
+                       }
+               });
+               Assert.assertEquals("BCD", path.toString());
+               Assert.assertEquals("RESULT", result);
+       }
+
+       public void testStop()
+       {
+               final StringBuilder path = new StringBuilder();
+
+               TestContainer container = new TestContainer();
+               container.visitChildren(new IVisitor<Component>()
+               {
+                       public Object component(Component component)
+                       {
+                               path.append(component.getId());
+                               if ("C".equals(component.getId()))
+                               {
+                                       return 
CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER;
+                               }
+                               return CONTINUE_TRAVERSAL;
+                       }
+               });
+               Assert.assertEquals("BCG", path.toString());
+       }
+
+       public void testDoNotGoDeeper2()
+       {
+               final StringBuilder path = new StringBuilder();
+
+               TestContainer container = new TestContainer();
+               container.visitChildren(new IVisitor<Component>()
+               {
+                       public Object component(Component component)
+                       {
+                               path.append(component.getId());
+                               if ("E".equals(component.getId()))
+                               {
+                                       return 
CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER;
+                               }
+                               return CONTINUE_TRAVERSAL;
+                       }
+               });
+               Assert.assertEquals("BCDEG", path.toString());
+       }
+
+
+       private static class TestContainer extends WebMarkupContainer
+       {
+               public TestContainer()
+               {
+                       super("A");
+                       WebMarkupContainer b = new WebMarkupContainer("B");
+                       WebMarkupContainer c = new WebMarkupContainer("C");
+                       WebMarkupContainer d = new WebMarkupContainer("D");
+                       WebMarkupContainer e = new WebMarkupContainer("E");
+                       WebMarkupContainer f = new WebMarkupContainer("F");
+                       WebMarkupContainer g = new WebMarkupContainer("G");
+                       add(b);
+                       add(c);
+                       c.add(d);
+                       c.add(e);
+                       e.add(f);
+                       add(g);
+               }
+
+       }
+}

Propchange: 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/VisitorTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to