|
4 | 4 | """
|
5 | 5 | from test.helper import check_evaluation
|
6 | 6 |
|
| 7 | +import pytest |
7 | 8 |
|
8 |
| -def test_abs(): |
9 |
| - for str_expr, str_expected in [ |
10 |
| - ("Abs[a - b]", "Abs[a - b]"), |
11 |
| - ("Abs[Sqrt[3]]", "Sqrt[3]"), |
12 |
| - ]: |
13 |
| - check_evaluation(str_expr, str_expected) |
| 9 | + |
| 10 | +@pytest.mark.parametrize( |
| 11 | + ("str_expr", "str_expected", "msg"), |
| 12 | + [ |
| 13 | + ("Abs[a - b]", "Abs[a - b]", None), |
| 14 | + ("Abs[Sqrt[3]]", "Sqrt[3]", None), |
| 15 | + ("Abs[Sqrt[3]/5]", "Sqrt[3]/5", None), |
| 16 | + ("Abs[-2/3]", "2/3", None), |
| 17 | + ("Abs[2+3 I]", "Sqrt[13]", None), |
| 18 | + ("Abs[2.+3 I]", "3.60555", None), |
| 19 | + # TODO: Implement rules for these cases. |
| 20 | + # ("Abs[4^(2 Pi)]", "4^(2 Pi)", None), |
| 21 | + ], |
| 22 | +) |
| 23 | +def test_abs(str_expr, str_expected, msg): |
| 24 | + check_evaluation(str_expr, str_expected, failure_message=msg) |
| 25 | + |
| 26 | + |
| 27 | +@pytest.mark.parametrize( |
| 28 | + ("str_expr", "str_expected", "msg"), |
| 29 | + [ |
| 30 | + ("Sign[a - b]", "Sign[a - b]", None), |
| 31 | + ("Sign[Sqrt[3]]", "1", None), |
| 32 | + ("Sign[0]", "0", None), |
| 33 | + ("Sign[0.]", "0", None), |
| 34 | + ("Sign[(1 + I)]", "(1/2 + I/2)Sqrt[2]", None), |
| 35 | + ("Sign[(1. + I)]", "(0.707107 + 0.707107 I)", None), |
| 36 | + ("Sign[(1 + I)/Sqrt[2]]", "(1 + I)/Sqrt[2]", None), |
| 37 | + ("Sign[(1 + I)/Sqrt[2.]]", "(0.707107 + 0.707107 I)", None), |
| 38 | + ("Sign[-2/3]", "-1", None), |
| 39 | + ("Sign[2+3 I]", "(2 + 3 I)/(13^(1/2))", None), |
| 40 | + ("Sign[2.+3 I]", "0.5547 + 0.83205 I", None), |
| 41 | + ("Sign[4^(2 Pi)]", "1", None), |
| 42 | + # FixME: add rules to handle this kind of case |
| 43 | + # ("Sign[I^(2 Pi)]", "I^(2 Pi)", None), |
| 44 | + # ("Sign[4^(2 Pi I)]", "1", None), |
| 45 | + ], |
| 46 | +) |
| 47 | +def test_sign(str_expr, str_expected, msg): |
| 48 | + check_evaluation(str_expr, str_expected, failure_message=msg) |
0 commit comments