1 # Copyright (c) Meta Platforms, Inc. and affiliates.
3 # This source code is licensed under the MIT license found in the
4 # LICENSE file in the root directory of this source tree.
9 from ..expr
import parse_expr
12 class ExprTest(unittest
.TestCase
):
13 def test_equal(self
) -> None:
14 valid_variables
= {"foo", "some_var", "another_var"}
15 e
= parse_expr("foo=bar", valid_variables
)
16 self
.assertTrue(e
.eval({"foo": "bar"}))
17 self
.assertFalse(e
.eval({"foo": "not-bar"}))
18 self
.assertFalse(e
.eval({"not-foo": "bar"}))
20 def test_not_equal(self
) -> None:
21 valid_variables
= {"foo"}
22 e
= parse_expr("not(foo=bar)", valid_variables
)
23 self
.assertFalse(e
.eval({"foo": "bar"}))
24 self
.assertTrue(e
.eval({"foo": "not-bar"}))
26 def test_bad_not(self
) -> None:
27 valid_variables
= {"foo"}
28 with self
.assertRaises(Exception):
29 parse_expr("foo=not(bar)", valid_variables
)
31 def test_bad_variable(self
) -> None:
32 valid_variables
= {"bar"}
33 with self
.assertRaises(Exception):
34 parse_expr("foo=bar", valid_variables
)
36 def test_all(self
) -> None:
37 valid_variables
= {"foo", "baz"}
38 e
= parse_expr("all(foo = bar, baz = qux)", valid_variables
)
39 self
.assertTrue(e
.eval({"foo": "bar", "baz": "qux"}))
40 self
.assertFalse(e
.eval({"foo": "bar", "baz": "nope"}))
41 self
.assertFalse(e
.eval({"foo": "nope", "baz": "nope"}))
43 def test_any(self
) -> None:
44 valid_variables
= {"foo", "baz"}
45 e
= parse_expr("any(foo = bar, baz = qux)", valid_variables
)
46 self
.assertTrue(e
.eval({"foo": "bar", "baz": "qux"}))
47 self
.assertTrue(e
.eval({"foo": "bar", "baz": "nope"}))
48 self
.assertFalse(e
.eval({"foo": "nope", "baz": "nope"}))