否定的なリテラルが機能するため、失敗した単体テストを提供してください。NVelocity ソース リポジトリのHEADを使用しましたが、1.1.1 がリリースされてから、その領域に変更があったことを認識していません。そのビルドで単体テストが失敗した場合は、必要に応じて、これがいつ修正されたかを調べることができます。
[Test]
public void NegativeLiterals()
{
Assert.AreEqual("-27", Eval("#set($result = -27)\r\n$result"));
Assert.AreEqual("-27", Eval("#set($result = 27 * -1)\r\n$result"));
Assert.AreEqual("-27", Eval("#set($result = 27*-1)\r\n$result"));
Assert.AreEqual("27", Eval("#set($result = -27*-1)\r\n$result"));
}
private string Eval(string template)
{
VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.Init();
using (StringWriter sw = new StringWriter())
{
bool ok = velocityEngine.Evaluate(new VelocityContext(), sw, "", template);
Assert.IsTrue(ok, "Evaluation returned failure");
return sw.ToString();
}
}