You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2007/03/13 16:57:47 UTC

svn commit: r517742 - in /tapestry/tapestry5/tapestry-core/trunk/src: main/java/org/apache/tapestry/corelib/components/If.java test/java/org/apache/tapestry/corelib/components/IfTest.java

Author: hlship
Date: Tue Mar 13 08:57:46 2007
New Revision: 517742

URL: http://svn.apache.org/viewvc?view=rev&rev=517742
Log:
TAPESTRY-1276: If component should include an optional negate parameter

Added:
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/IfTest.java
Modified:
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/If.java

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/If.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/If.java?view=diff&rev=517742&r1=517741&r2=517742
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/If.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/If.java Tue Mar 13 08:57:46 2007
@@ -27,6 +27,13 @@
     private boolean _test;
 
     /**
+     * Optional parameter to invert the test. If true, then the body is rendered when the test
+     * parameter is false (not true).
+     */
+    @Parameter
+    private boolean _negate;
+
+    /**
      * An alternate {@link Block} to render if the test parameter is false. The default, null, means
      * render nothing in that situation.
      */
@@ -39,7 +46,7 @@
      */
     Object beginRender()
     {
-        return _test ? null : _else;
+        return _test != _negate ? null : _else;
     }
 
     /**
@@ -48,6 +55,13 @@
      */
     boolean beforeRenderBody()
     {
-        return _test;
+        return _test != _negate;
+    }
+
+    void setup(boolean test, boolean negate, Block elseBlock)
+    {
+        _test = test;
+        _negate = negate;
+        _else = elseBlock;
     }
 }

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/IfTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/IfTest.java?view=auto&rev=517742
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/IfTest.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/IfTest.java Tue Mar 13 08:57:46 2007
@@ -0,0 +1,61 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed 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.tapestry.corelib.components;
+
+import org.apache.tapestry.Block;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.testng.annotations.Test;
+
+public class IfTest extends InternalBaseTestCase
+{
+    @Test
+    public void true_test_renders_body()
+    {
+        If component = new If();
+
+        component.setup(true, false, null);
+
+        assertNull(component.beginRender());
+        assertTrue(component.beforeRenderBody());
+    }
+
+    @Test
+    public void false_test_renders_else_block()
+    {
+        Block block = newBlock();
+
+        replay();
+
+        If component = new If();
+
+        component.setup(false, false, block);
+
+        assertSame(component.beginRender(), block);
+        assertFalse(component.beforeRenderBody());
+
+        verify();
+    }
+
+    @Test
+    public void negate_inverts_test()
+    {
+        If component = new If();
+
+        component.setup(false, true, null);
+
+        assertNull(component.beginRender());
+        assertTrue(component.beforeRenderBody());
+    }
+}