diff --git a/apps/showcase/src/main/webapp/tags/non-ui/ifTag/testIf.ftl b/apps/showcase/src/main/webapp/tags/non-ui/ifTag/testIf.ftl
index 2f5e8a7df..a40b756c7 100644
--- a/apps/showcase/src/main/webapp/tags/non-ui/ifTag/testIf.ftl
+++ b/apps/showcase/src/main/webapp/tags/non-ui/ifTag/testIf.ftl
@@ -2,67 +2,606 @@
TEST IF
-
-
+
+
+This is a simple freemarker template to test the If Tag (using freemarker directive).
+There's quite a few combination being tested. The characters in bold and non-bold should be the same.
+
+
+
+1 - Foo -
<@s.if test="true">
- 1]THIS SHOULD APPEAR
+ Foo
@s.if>
<@s.else>
- THIS SHOULD NOT APPEAR
+ Bar
@s.else>
-
-
-
+
+2 - Bar -
<@s.if test="false">
- THIS SHOULD NOT APPEAR
+ Foo
+@s.if>
+<@s.else>
+ Bar
+@s.else>
+
+3 - FooFooFoo -
+<@s.if test="true">
+ Foo
+ <@s.if test="true">
+ FooFoo
+ @s.if>
+ <@s.else>
+ BarBar
+ @s.else>
+@s.if>
+<@s.else>
+ Bar
+@s.else>
+
+4 - FooBarBar -
+<@s.if test="true">
+ Foo
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+ <@s.else>
+ BarBar
+ @s.else>
+@s.if>
+
+5 - BarFooFoo -
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.else>
+ Bar
+ <@s.if test="true">
+ FooFoo
+ @s.if>
+ <@s.else>
+ BarBar
+ @s.else>
+@s.else>
+
+6 - BarBarBar -
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.else>
+ Bar
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+ <@s.else>
+ BarBar
+ @s.else>
+@s.else>
+
+7 - Foo -
+<@s.if test="true">
+ Foo
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+8 - Moo -
+<@s.if test="false">
+ Foo
@s.if>
<@s.elseif test="true">
- 2]THIS SHOULD APPEAR
+ Moo
@s.elseif>
-
-
+<@s.else>
+ Bar
+@s.else>
+
+9 - Bar -
<@s.if test="false">
- THIS SHOULD NOT APPEAR
+ Foo
@s.if>
<@s.elseif test="false">
- THIS SHOULD NOT APPEAR
+ Moo
@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+10 - FooFooFoo -
+<@s.if test="true">
+ Foo
+ <@s.if test="true">
+ FooFoo
+ @s.if>
+ <@s.elseif test="false">
+ MooMoo
+ @s.elseif>
+ <@s.else>
+ BarBar
+ @s.else>
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+11 - FooMooMoo -
+<@s.if test="true">
+ Foo
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+ <@s.elseif test="true">
+ MooMoo
+ @s.elseif>
+ <@s.else>
+ BarBar
+ @s.else>
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+12 - FooBarBar -
+<@s.if test="true">
+ Foo
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+ <@s.elseif test="false">
+ MooMoo
+ @s.elseif>
+ <@s.else>
+ BarBar
+ @s.else>
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+13 - MooFooFoo -
+<@s.if test="false">
+ Foo
+@s.if>
<@s.elseif test="true">
- 3]THIS SHOULD APPEAR
+ Moo
+ <@s.if test="true">
+ FooFoo
+ @s.if>
+ <@s.elseif test="false">
+ MooMoo
+ @s.elseif>
+ <@s.else>
+ BarBar
+ @s.else>
@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+14 - MooMooMoo -
+<@s.if test="false">
+ Foo
+@s.if>
<@s.elseif test="true">
- THIS SHOULD NOT APPEAR
+ Moo
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+ <@s.elseif test="true">
+ MooMoo
+ @s.elseif>
+ <@s.else>
+ BarBar
+ @s.else>
@s.elseif>
<@s.else>
- THIS SHOULD NOT APPEAR
+ Bar
@s.else>
-
-
+
+15 - MooBarBar -
<@s.if test="false">
- THIS SHOULD NOT APPEAR
+ Foo
+@s.if>
+<@s.elseif test="true">
+ Moo
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+ <@s.elseif test="false">
+ MooMoo
+ @s.elseif>
+ <@s.else>
+ BarBar
+ @s.else>
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+16 - BarFooFoo -
+<@s.if test="false">
+ Foo
@s.if>
<@s.elseif test="false">
- THIS SHOULD NOT APPEAR
+ Moo
@s.elseif>
<@s.else>
- 4]THIS SHOULD APPEAR
-@s.else>
-
-
-<@s.if test="false">
- THIS SHOULD NOT APPEAR
+ Bar
+ <@s.if test="true">
+ FooFoo
+ @s.if>
+ <@s.elseif test="false">
+ MooMoo
+ @s.elseif>
+ <@s.else>
+ BarBar
+ @s.else>
+@s.else>
+
+17 - BarMooMoo -
+<@s.if test="false">
+ Foo
@s.if>
<@s.elseif test="false">
- THIS SHOULD NOT APPEAR
-@s.elseif>
-<@s.elseif test="false">
- THIS SHOULD NOT APPEAR
-@s.elseif>
-<@s.elseif test="false">
- THIS SHOULD NOT APPEAR
+ Moo
@s.elseif>
<@s.else>
- 5]THIS SHOULD APPEAR
+ Bar
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+ <@s.elseif test="true">
+ MooMoo
+ @s.elseif>
+ <@s.else>
+ BarBar
+ @s.else>
+@s.else>
+
+18 - BarBarBar -
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+ <@s.elseif test="false">
+ MooMoo
+ @s.elseif>
+ <@s.else>
+ BarBar
+ @s.else>
@s.else>
-
+
+
+19 - Foo -
+<@s.if test="true">
+ Foo
+@s.if>
+
+
+20 - ** should not display anything ** -
+<@s.if test="false">
+ Foo
+@s.if>
+
+
+21 FooFooFoo -
+<@s.if test="true">
+ Foo
+ <@s.if test="true">
+ FooFoo
+ @s.if>
+@s.if>
+<@s.else>
+ Bar
+@s.else>
+
+
+22 - Foo -
+<@s.if test="true">
+ Foo
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+@s.if>
+<@s.else>
+ Bar
+@s.else>
+
+
+23 - BarFooFoo -
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.else>
+ Bar
+ <@s.if test="true">
+ FooFoo
+ @s.if>
+@s.else>
+
+
+24 - Bar -
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.else>
+ Bar
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+@s.else>
+
+
+25 - FooFooFoo
+<@s.if test="true">
+ Foo
+ <@s.if test="true">
+ FooFoo
+ @s.if>
+ <@s.elseif test="false">
+ MooMoo
+ @s.elseif>
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+
+26 - FooMooMoo
+<@s.if test="true">
+ Foo
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+ <@s.elseif test="true">
+ MooMoo
+ @s.elseif>
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+27 - Foo -
+<@s.if test="true">
+ Foo
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+ <@s.elseif test="false">
+ MooMoo
+ @s.elseif>
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+28 - MooFooFoo
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.elseif test="true">
+ Moo
+ <@s.if test="true">
+ FooFoo
+ @s.if>
+ <@s.elseif test="false">
+ MooMoo
+ @s.elseif>
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+
+29 - MooMooMoo
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.elseif test="true">
+ Moo
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+ <@s.elseif test="true">
+ MooMoo
+ @s.elseif>
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+
+30 - Moo -
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.elseif test="true">
+ Moo
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+ <@s.elseif test="false">
+ MooMoo
+ @s.elseif>
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+
+31 - BarFooFoo -
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+ <@s.if test="true">
+ FooFoo
+ @s.if>
+ <@s.elseif test="false">
+ MooMoo
+ @s.elseif>
+@s.else>
+
+32 - BarMooMoo -
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+ <@s.elseif test="true">
+ MooMoo
+ @s.elseif>
+@s.else>
+
+33 - Bar -
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+ <@s.elseif test="false">
+ MooMoo
+ @s.elseif>
+@s.else>
+
+
+34 - FooFooFoo -
+<@s.if test="true">
+ Foo
+ <@s.if test="true">
+ FooFoo
+ @s.if>
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+
+35 - Foo -
+<@s.if test="true">
+ Foo
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+
+36 - MooFooFoo -
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.elseif test="true">
+ Moo
+ <@s.if test="true">
+ FooFoo
+ @s.if>
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+
+37 - Moo -
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.elseif test="true">
+ Moo
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+@s.elseif>
+<@s.else>
+ Bar
+@s.else>
+
+
+38 - BarFooFoo -
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+ <@s.if test="true">
+ FooFoo
+ @s.if>
+@s.else>
+
+
+39 - Bar -
+<@s.if test="false">
+ Foo
+@s.if>
+<@s.elseif test="false">
+ Moo
+@s.elseif>
+<@s.else>
+ Bar
+ <@s.if test="false">
+ FooFoo
+ @s.if>
+@s.else>
+
+
+
+
+