#*

@test escape.vm

This template is used for Velocity regression testing.
If you alter this template make sure you change the
corresponding comparison file so that the regression 
test doesn't fail incorrectly.

Tests the basic integer math capabilities.

*#

Addition and subtraction : 
#set($foo = 1)
#set($foo = $foo + 1)
1 + 1 = $foo
$foo - 1 = #set($foo = $foo - 1 )$foo

Multiplication, division, and modulus :
#set($bar = 5)
#set($rem = $bar % 2)
#set($rem2 = $bar % 0)
#set($rem3 = 7%2)
$bar % 2 = $rem
$bar % 0 = $rem2
7 % 2 = $rem3
$bar / 2 = #set($rem = $bar / 2 )$rem
$bar / 0 = #set($rem4 = $bar / 0 )$rem4
$bar * 2 = #set($rem = $bar * 2 )$rem

$bar * -1 = #set($rem = $bar * -1)$rem
$bar * -2 = #set($rem = $bar *-2)$rem
$bar * -2 = #set($rem = -2*$bar)$rem

And now null nodes to make sure it doesn't throw an NPE :
#set($flargh=$woogie + $wabbie)

Some test for the new number-handling
$int1 + $long1 = #set ($rem = $int1 + $long1)$rem
$int1 - $long1 = #set ($rem = $int1 - $long1)$rem
$int1 * $long1 = #set ($rem = $int1 * $long1)$rem
$int1 / $long1 = #set ($rem = $int1 / $long1)$rem
$int1 % $long1 = #set ($rem = $int1 % $long1)$rem

$int1 + $float1 = #set ($rem = $int1 + $float1)$rem
$int1 - $float1 = #set ($rem = $int1 - $float1)$rem
$int1 * $float1 = #set ($rem = $int1 * $float1)$rem
$int1 / $float1 = #set ($rem = $int1 / $float1)$rem

This checks that an object implementing TemplateNumber can be used in arithmetic
$int1 + $templatenumber1.AsNumber = #set ($rem = $int1 + $templatenumber1)$rem
$int1 - $templatenumber1.AsNumber = #set ($rem = $int1 - $templatenumber1)$rem
$int1 * $templatenumber1.AsNumber = #set ($rem = $int1 * $templatenumber1)$rem
$int1 / $templatenumber1.AsNumber = #set ($rem = $int1 / $templatenumber1)$rem

Test integer division
5 / 2 = #set($result = 5 / 2)$result

Test decimal division
5 / 2.0 = #set($result = 5 / 2.0)$result
5.0 / 2 = #set($result = 5.0 / 2)$result