test_evaluate.py 953 B

12345678910111213141516171819202122232425262728293031323334353637
  1. # pylint: disable=missing-docstring
  2. import pytest
  3. from acpi_backlight.evaluate import evaluate_expression
  4. @pytest.mark.parametrize(('expr_str', 'names', 'expected'), [
  5. ('0', {}, 0),
  6. ('0.0', {}, 0),
  7. ('1.0', {}, 1),
  8. ('-1', {}, -1),
  9. ('0.1 + 0.2', {}, 0.3),
  10. ('0.3 - 0.2', {}, 0.1),
  11. ('0.2 * 3', {}, 0.6),
  12. ('0.6 / 3', {}, 0.2),
  13. ('0.6 / 3 + 0.1', {}, 0.3),
  14. ('(0.6 - 0.2) / 2', {}, 0.2),
  15. ('b', {'b': 0.4}, 0.4),
  16. ('-b', {'b': 0.3}, -0.3),
  17. ('0.1 + b', {'b': 0.2}, 0.3),
  18. ])
  19. def test_evaluate_expression(expr_str, names, expected):
  20. assert expected == pytest.approx(evaluate_expression(expr_str, names))
  21. @pytest.mark.parametrize('expr_str', [
  22. 'read("/proc/cpuinfo")',
  23. 'os.exit(42)',
  24. 'os.system("echo evil")',
  25. '0.__class__',
  26. 'None.__class__',
  27. 'eval("1")',
  28. ])
  29. def test_evaluate_expression_fail(expr_str):
  30. with pytest.raises(Exception):
  31. evaluate_expression(expr_str, {})