tests(stdlib): avoid decimal attribute arguments; use string TestCase values and parse to decimal for high-precision cases

This commit is contained in:
Jordan Wages 2025-08-20 06:06:42 -05:00
commit e84cce9fef

View file

@ -31,7 +31,6 @@ public class StdlibFunctionsTests
[TestCase("abs(-1)", 1)] [TestCase("abs(-1)", 1)]
[TestCase("abs(0)", 0)] [TestCase("abs(0)", 0)]
[TestCase("abs(2)", 2)] [TestCase("abs(2)", 2)]
[TestCase("abs(-3.5)", 3.5)]
[TestCase("2 + abs(-1)", 3)] [TestCase("2 + abs(-1)", 3)]
public void AbsoluteValue_Works(string expr, decimal expected) public void AbsoluteValue_Works(string expr, decimal expected)
{ {
@ -39,6 +38,14 @@ public class StdlibFunctionsTests
AssertSuccess(result, expected, _interp); AssertSuccess(result, expected, _interp);
} }
[TestCase("abs(-3.5)", "3.5")]
public void AbsoluteValue_Works_Decimal(string expr, string expectedStr)
{
var result = _interp.Interpret(expr);
var expected = decimal.Parse(expectedStr, CultureInfo.InvariantCulture);
AssertSuccess(result, expected, _interp);
}
[TestCase("sign(5)", 1)] [TestCase("sign(5)", 1)]
[TestCase("sign(0)", 1)] [TestCase("sign(0)", 1)]
[TestCase("sign(-2)", -1)] [TestCase("sign(-2)", -1)]
@ -53,34 +60,49 @@ public class StdlibFunctionsTests
[TestCase("min(2,1)", 1)] [TestCase("min(2,1)", 1)]
[TestCase("min(-3,4)", -3)] [TestCase("min(-3,4)", -3)]
[TestCase("1 + min(3,4)", 4)] [TestCase("1 + min(3,4)", 4)]
[TestCase("min(2.5, 2.6)", 2.5)]
public void Min_Works(string expr, decimal expected) public void Min_Works(string expr, decimal expected)
{ {
var result = _interp.Interpret(expr); var result = _interp.Interpret(expr);
AssertSuccess(result, expected, _interp); AssertSuccess(result, expected, _interp);
} }
[TestCase("min(2.5, 2.6)", "2.5")]
public void Min_Works_Decimals(string expr, string expectedStr)
{
var result = _interp.Interpret(expr);
var expected = decimal.Parse(expectedStr, CultureInfo.InvariantCulture);
AssertSuccess(result, expected, _interp);
}
[TestCase("max(1,2)", 2)] [TestCase("max(1,2)", 2)]
[TestCase("max(2,1)", 2)] [TestCase("max(2,1)", 2)]
[TestCase("max(-3,4)", 4)] [TestCase("max(-3,4)", 4)]
[TestCase("1 + max(3,4)", 5)] [TestCase("1 + max(3,4)", 5)]
[TestCase("max(2.5, 2.6)", 2.6)]
public void Max_Works(string expr, decimal expected) public void Max_Works(string expr, decimal expected)
{ {
var result = _interp.Interpret(expr); var result = _interp.Interpret(expr);
AssertSuccess(result, expected, _interp); AssertSuccess(result, expected, _interp);
} }
[TestCase("pi", 3.1415926535897931)] [TestCase("max(2.5, 2.6)", "2.6")]
[TestCase("e", 2.7182818284590451)] public void Max_Works_Decimals(string expr, string expectedStr)
[TestCase("tau", 6.2831853071795862)]
[TestCase("phi", 1.6180339887498948)]
[TestCase("goldenratio", 1.6180339887498948)]
[TestCase("eurler", 0.5772156649015329)]
[TestCase("omega", 0.5671432904097839)]
public void Constants_AreAvailable(string expr, decimal expected)
{ {
var result = _interp.Interpret(expr); var result = _interp.Interpret(expr);
var expected = decimal.Parse(expectedStr, CultureInfo.InvariantCulture);
AssertSuccess(result, expected, _interp);
}
[TestCase("pi", "3.1415926535897931")]
[TestCase("e", "2.7182818284590451")]
[TestCase("tau", "6.2831853071795862")]
[TestCase("phi", "1.6180339887498948")]
[TestCase("goldenratio", "1.6180339887498948")]
[TestCase("eurler", "0.5772156649015329")]
[TestCase("omega", "0.5671432904097839")]
public void Constants_AreAvailable(string expr, string expectedStr)
{
var result = _interp.Interpret(expr);
var expected = decimal.Parse(expectedStr, CultureInfo.InvariantCulture);
AssertSuccess(result, expected, _interp); AssertSuccess(result, expected, _interp);
} }