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());
+ }
+}