Skip to content

Commit

Permalink
Add math expression test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
dweindl committed Jun 26, 2024
1 parent 9ac3543 commit 09a4287
Show file tree
Hide file tree
Showing 2 changed files with 196 additions and 0 deletions.
9 changes: 9 additions & 0 deletions petabtests/cases/v2.0.0/math/README.md
Original file line number Diff line number Diff line change
@@ -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.
187 changes: 187 additions & 0 deletions petabtests/cases/v2.0.0/math/math_tests.yaml
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 09a4287

Please sign in to comment.