diff options
Diffstat (limited to 'grc/tests/test_expr_utils.py')
-rw-r--r-- | grc/tests/test_expr_utils.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/grc/tests/test_expr_utils.py b/grc/tests/test_expr_utils.py new file mode 100644 index 0000000000..4f25477bf1 --- /dev/null +++ b/grc/tests/test_expr_utils.py @@ -0,0 +1,41 @@ +import operator + +import pytest + +from grc.core.utils import expr_utils + +id_getter = operator.itemgetter(0) +expr_getter = operator.itemgetter(1) + + +def test_simple(): + objects = [ + ['c', '2 * a + b'], + ['a', '1'], + ['b', '2 * a + unknown * d'], + ['d', '5'], + ] + + expected = [ + ['a', '1'], + ['d', '5'], + ['b', '2 * a + unknown * d'], + ['c', '2 * a + b'], + ] + + out = expr_utils.sort_objects2(objects, id_getter, expr_getter) + + assert out == expected + + +def test_other(): + test = [ + ['c', '2 * a + b'], + ['a', '1'], + ['b', '2 * c + unknown'], + ] + + expr_utils.sort_objects2(test, id_getter, expr_getter, check_circular=False) + + with pytest.raises(RuntimeError): + expr_utils.sort_objects2(test, id_getter, expr_getter) |