Do not unnecessarily constrain values in verifyPropType()
[hiphop-php.git] / third-party / watchman / src / build / fbcode_builder / getdeps / test / expr_test.py
blobf12f68985ed8915738ecf4743b498c44c3921afc
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.
7 import unittest
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"}))