A simple test follows:
${message}
<#assign b=true>Now perform scalar boolean tests:
<#if b>
b is true.
<#else>
b is false.
#if>
<#if false>
This can't be!
<#else>
This makes sense.
#if>
<#if boolean3>
boolean3 succeeded.
<#else>
boolean3 failed.
#if>
<#if boolean4>
boolean4 succeeded.
<#else>
boolean4 failed.
#if>
<#if boolean4 || boolean5>
boolean4 || boolean5 succeeded.
<#else>
boolean4 || boolean5 failed.
#if>
<#if boolean5 || boolean4 || boolean5>
boolean5 || boolean4 || boolean5 succeeded.
<#else>
boolean5 || boolean4 || boolean5 failed.
#if>
<#if boolean4 && boolean5>
boolean4 && boolean5 succeeded.
<#else>
boolean4 && boolean5 failed.
#if>
Now test list models:
<#if list1?exists>
list1 succeeded.
<#else>
list1 failed.
#if>
<#if list2?exists>
list2 succeeded.
<#else>
list2 failed.
#if>
Test hash models:
<#if hash1?exists>
hash1 succeeded: ${hash1.temp}
<#else>
hash1 failed: ${hash1.temp}
#if>
<#if hash2?exists>
hash2 succeeded.
<#else>
hash2 failed.
#if>
Test not operator:
<#if ! boolean1> Not boolean1 succeeded <#else> Not boolean1 failed #if>
<#if !boolean1> Not boolean1 succeeded <#else> Not boolean1 failed #if>
<#if ! boolean2> Not boolean2 succeeded <#else> Not boolean2 failed #if>
<#if !boolean2> Not boolean2 succeeded <#else> Not boolean2 failed #if>
<#if message == "Hello, world!"> Message is "Hello, world!" <#else> Message is something else (${message}) #if>
<#if message != "Hello, world!"> Message is not "Hello, world!" -- it's ${message} <#else> Message is "Hello, world!" #if>