diff --git a/petabtests/cases/v2.0.0/math/README.md b/petabtests/cases/v2.0.0/math/README.md new file mode 100644 index 0000000..f103a50 --- /dev/null +++ b/petabtests/cases/v2.0.0/math/README.md @@ -0,0 +1,9 @@ +# PEtab math expression tests + +This directory contains test cases for parsing PEtab math expressions. + +`math_tests.yaml` contains a list of test cases under `cases`. +Each test case consists of a valid PEtab math expression under `expression` and +the expected result of parsing the expression under `expected`. +The expected result may be a numeric value or a symbolic expression. +Booleans are expected to be converted to floats. diff --git a/petabtests/cases/v2.0.0/math/math_tests.yaml b/petabtests/cases/v2.0.0/math/math_tests.yaml new file mode 100644 index 0000000..27fc20d --- /dev/null +++ b/petabtests/cases/v2.0.0/math/math_tests.yaml @@ -0,0 +1,187 @@ +cases: +- expression: "1" + expected: 1.0 +- expression: "+1.0" + expected: 1.0 +- expression: "-1.0" + expected: -1.0 +- expression: "--1.0" + expected: 1.0 +- expression: "-(-1)" + expected: 1.0 +- expression: 1 + 2 + expected: 3.0 +- expression: 1 - 2 + expected: -1.0 +- expression: 1e3 * 2 + expected: 2000.0 +- expression: 1e+3 * 2 + expected: 2000.0 +- expression: 1 / 2 + expected: 0.5 +- expression: "1e2" + expected: 100 +- expression: "1.0e2" + expected: 100 +- expression: "1e+2" + expected: 100 +- expression: "1e-2" + expected: 0.01 +- expression: "1.0e-2" + expected: 0.01 +- expression: 1 + 2 * 3 + expected: 7.0 +- expression: inf + expected: inf +- expression: -inf + expected: -inf +- expression: pow(2, 3) + expected: 8.0 +- expression: log(exp(1)) + expected: 1.0 +- expression: ln(exp(1)) + expected: 1.0 +- expression: log10(10) + expected: 1.0 +- expression: log2(2) + expected: 1.0 +- expression: 2^3 + expected: 8.0 +- expression: -2^4 + expected: -16.0 +- expression: 2^2^3 + expected: 256.0 +- expression: 9 * 3 ^ -2 + expected: 1.0 +- expression: exp(1) + expected: 2.718281828459045 +- expression: sqrt(4) + expected: 2.0 +- expression: log(100, 10) + expected: 2.0 +- expression: sin(0) + expected: 0.0 +- expression: cos(0) + expected: 1.0 +- expression: tan(0) + expected: 0.0 +- expression: cot(1) + expected: 0.6420926159343308 +- expression: sec(0) + expected: 1.0 +- expression: csc(1) + expected: 1.18839510577812 +- expression: arcsin(0) + expected: 0.0 +- expression: arccos(1) + expected: 0.0 +- expression: arctan(0) + expected: 0.0 +- expression: arccot(1) + expected: 0.7853981633974483 +- expression: arcsec(1) + expected: 0.0 +- expression: arccsc(1) + expected: 1.5707963267948966 +- expression: sinh(0) + expected: 0.0 +- expression: cosh(0) + expected: 1.0 +- expression: tanh(0) + expected: 0.0 +- expression: coth(1) + expected: 1.3130352854993312 +- expression: sech(0) + expected: 1.0 +- expression: csch(1) + expected: 0.8509181282393216 +- expression: arcsinh(0) + expected: 0.0 +- expression: arccosh(1) + expected: 0.0 +- expression: arctanh(0) + expected: 0.0 +- expression: arccoth(1) + expected: inf +- expression: arcsech(1) + expected: 0.0 +- expression: arccsch(1) + expected: 0.881373587019543 +- expression: piecewise(1, true, 0) + expected: 1.0 +- expression: piecewise(1, true || true, 0) + expected: 1.0 +- expression: piecewise(1, false || (true || true), 0) + expected: 1.0 +- expression: piecewise(0, true || false && false, 1) + expected: 1.0 + comment: Test precedence of logical operators, && and || have equal precedence in PEtab (unlike in C where && has higher precedence than ||). +- expression: piecewise(1, true || (false && false), 0) + expected: 1.0 +- expression: piecewise(1, false, 0) + expected: 0.0 +- expression: abs(-4) + expected: 4.0 +- expression: sign(-2) + expected: -1.0 +- expression: min(1, 2) + expected: 1.0 +- expression: max(1, 2) + expected: 2.0 +- expression: piecewise(1, 1 > 2, 0) + expected: 0.0 +- expression: piecewise(1, 2 >= 2, 0) + expected: 1.0 +- expression: piecewise(1, 2 == 2, 0) + expected: 1.0 +- expression: piecewise(1, true == true, 0) + expected: 1.0 +- expression: piecewise(1, false == false, 0) + expected: 1.0 +- expression: piecewise(1, 2 != 2, 0) + expected: 0.0 +- expression: piecewise(1, 2 < 3 && 3 > 2, 0) + expected: 1.0 +- expression: piecewise(1, 2 < 3 || 3 < 2, 0) + expected: 1.0 +- expression: piecewise(1, !(2 < 3), 0) + expected: 0.0 +- expression: piecewise(1, true, 2, true, 0) + expected: 1.0 + comment: Test that the first true condition is used. +- expression: piecewise(1, false, 2, true, 0) + expected: 2.0 +- expression: piecewise(1, false, 2, false, 3) + expected: 3.0 +- expression: 3 + true + expected: 4.0 +- expression: 2 * false + true + expected: 1.0 +- expression: piecewise(1, true == 1, 0) + expected: 1.0 +- expression: piecewise(1, true == 2, 0) + expected: 0.0 +- expression: piecewise(1, false == 1, 0) + expected: 0.0 +- expression: piecewise(1, false == 0, 0) + expected: 1.0 +- expression: sign(true) + expected: 1.0 +- expression: sign(false) + expected: 0.0 +- expression: piecewise(true, true, false) + expected: 1.0 +- expression: piecewise(false, false, true) + expected: 1.0 +- expression: piecewise(1, 1, 0) + expected: 1.0 +- expression: piecewise(1, -0.1, 0) + expected: 1.0 +- expression: piecewise(1, 0.0, 0) + expected: 0.0 +- expression: -true + expected: -1.0 +- expression: -false + expected: 0.0 +- expression: a * b + expected: a * b