From 14da1c15ddc9e62ad2e2ea76802537bd12972418 Mon Sep 17 00:00:00 2001 From: Stan Lagun Date: Fri, 9 Oct 2015 22:44:25 +0300 Subject: [PATCH] Allow "not X" expressions on non-boolean X Change-Id: I6c41d6113fddbbd04c8d68f1a965ae924af8fa3f Closes-Bug: #1504073 --- yaql/standard_library/boolean.py | 1 - yaql/tests/test_boolean.py | 7 +++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/yaql/standard_library/boolean.py b/yaql/standard_library/boolean.py index 98e6336..cecd52f 100644 --- a/yaql/standard_library/boolean.py +++ b/yaql/standard_library/boolean.py @@ -30,7 +30,6 @@ def or_(left, right): return left() or right() -@specs.parameter('arg', bool) @specs.name('#unary_operator_not') def not_(arg): return not arg diff --git a/yaql/tests/test_boolean.py b/yaql/tests/test_boolean.py index 313ee2c..88e7d04 100644 --- a/yaql/tests/test_boolean.py +++ b/yaql/tests/test_boolean.py @@ -22,6 +22,7 @@ class TestBoolean(yaql.tests.TestCase): self.assertFalse(self.eval('false and false')) self.assertFalse(self.eval('false and true')) self.assertEqual(12, self.eval('true and 12')) + self.assertFalse(self.eval('null and null')) def test_or(self): self.assertTrue(self.eval('true or true')) @@ -29,10 +30,16 @@ class TestBoolean(yaql.tests.TestCase): self.assertFalse(self.eval('false or false')) self.assertTrue(self.eval('false or true')) self.assertEqual(12, self.eval('12 or true')) + self.assertFalse(self.eval('null or null')) def test_not(self): self.assertFalse(self.eval('not true')) self.assertTrue(self.eval('not false')) + self.assertTrue(self.eval('not 0')) + self.assertFalse(self.eval('not 123')) + self.assertTrue(self.eval("not ''")) + self.assertFalse(self.eval("not True")) + self.assertTrue(self.eval('not null')) def test_lazy(self): self.assertEqual(1, self.eval('$ or 10/($-1)', data=1))