| <#-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you 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. |
| --> |
| <#assign x = 1> |
| <@assertEquals expected=1 actual=x /> |
| <#assign x = x + 1> |
| <@assertEquals expected=2 actual=x /> |
| <#assign x += 1> |
| <@assertEquals expected=3 actual=x /> |
| <#assign x /= 2> |
| <@assertEquals expected=1.5 actual=x /> |
| <#assign x *= 2> |
| <@assertEquals expected=3 actual=x /> |
| <#assign x %= 2> |
| <@assertEquals expected=1 actual=x /> |
| <#assign x += x x += x x += x> |
| <@assertEquals expected=8 actual=x /> |
| <#assign x += x, x += x, x += x> |
| <@assertEquals expected=64 actual=x /> |
| <#assign x++> |
| <@assertEquals expected=65 actual=x /> |
| <#assign x--> |
| <@assertEquals expected=64 actual=x /> |
| <#assign x--, x--, x--, x++, x -= 60> |
| <@assertEquals expected=2 actual=x /> |
| |
| <#assign x = 'a'> |
| <#assign x += 1> |
| <@assertEquals expected='a1' actual=x /> |
| |
| <#assign x = 1> |
| <#assign x += 'a'> |
| <@assertEquals expected='1a' actual=x /> |
| |
| <#assign x = [11]> |
| <#assign x += [22]> |
| <@assertEquals expected=11 actual=x[0] /> |
| <@assertEquals expected=22 actual=x[1] /> |
| <@assertEquals expected=2 actual=x?size /> |
| |
| <#assign x = { 'a': 11 }> |
| <#assign x += { 'b': 22 }> |
| <@assertEquals expected=11 actual=x.a /> |
| <@assertEquals expected=22 actual=x.b /> |
| <@assertEquals expected=2 actual=x?size /> |
| |
| <#assign x = 1> |
| <#global g = 11> |
| <#global g -= x> |
| <@assertEquals expected=10 actual=g /> |
| <#global g *= 2> |
| <@assertEquals expected=20 actual=g /> |
| <#global g /= 2.5> |
| <@assertEquals expected=8 actual=g /> |
| <#global g += 2> |
| <@assertEquals expected=10 actual=g /> |
| <#global g++> |
| <@assertEquals expected=11 actual=g /> |
| <#global g--> |
| <@assertEquals expected=10 actual=g /> |
| |
| <#macro m> |
| <#local v = x + g> |
| <@assertEquals expected=11 actual=v /> |
| <#local v -= x> |
| <@assertEquals expected=10 actual=v /> |
| <#local v *= 2> |
| <@assertEquals expected=20 actual=v /> |
| <#local v /= 2.5> |
| <@assertEquals expected=8 actual=v /> |
| <#local v += 2> |
| <@assertEquals expected=10 actual=v /> |
| <#local v++> |
| <@assertEquals expected=11 actual=v /> |
| <#local v--> |
| <@assertEquals expected=10 actual=v /> |
| </#macro> |
| <@m /> |
| |
| <#assign foo = 'a'> |
| <@assertFails messageRegexp=r".*expected.*number.*assignment.*foo.*string.*"><#assign foo -= 1></@> |
| <@assertFails messageRegexp=r".*expected.*number.*assignment.*foo.*string.*"><#assign foo++></@> |
| <@assertFails messageRegexp=r".*expected.*number.*assignment.*foo.*string.*"><#assign foo--></@> |
| <#assign x = 1> |
| <@assertFails messageRegexp=r"(?s).*expected.*number.*string.*'a'.*"><#assign x -= 'a'></@> |
| <@assertFails messageRegexp=r"(?s).*assignment.*noSuchVar.*missing.*-=.*"><#assign noSuchVar -= 1></@> |
| <@assertFails messageRegexp=r"(?s).*assignment.*noSuchVar.*missing.*\+=.*"><#assign noSuchVar += 1></@> |
| <@assertFails messageRegexp=r"(?s).*assignment.*noSuchVar.*missing.*\*=.*"><#assign noSuchVar *= 1></@> |
| <@assertFails messageRegexp=r"(?s).*assignment.*noSuchVar.*missing.*/=.*"><#assign noSuchVar /= 1></@> |
| <@assertFails messageRegexp=r"(?s).*assignment.*noSuchVar.*missing.*%=.*"><#assign noSuchVar %= 1></@> |
| <@assertFails messageRegexp=r"(?s).*assignment.*noSuchVar.*missing.*\+\+.*"><#assign noSuchVar++></@> |
| <@assertFails messageRegexp=r"(?s).*assignment.*noSuchVar.*missing.*--.*"><#assign noSuchVar--></@> |
| <@assertFails messageRegexp=r'(?s).*assignment.*noSuchVar.*missing.*\+=.*"\$".*'><#assign $noSuchVar += 1></@> |