diff options
author | smiddlek <smiddlek@b1010a0a-674b-0410-b734-77272b80c875> | 2008-07-01 20:47:46 +0000 |
---|---|---|
committer | smiddlek <smiddlek@b1010a0a-674b-0410-b734-77272b80c875> | 2008-07-01 20:47:46 +0000 |
commit | 981e2eb43edcec55b62ac38fc58b01f9e9dfdc80 (patch) | |
tree | 8953500bb91571ccce00698c7a1ae3ab1dad4ec1 | |
parent | 1c502e37d1243faa8678f7c35943fd89ab2102f9 (diff) | |
download | mox-981e2eb43edcec55b62ac38fc58b01f9e9dfdc80.tar.gz |
Add a Not comparator to compose with other comparators.
Patch by: Benoit Sigoure <benoits@google.com>
git-svn-id: http://pymox.googlecode.com/svn/trunk@18 b1010a0a-674b-0410-b734-77272b80c875
-rwxr-xr-x | mox.py | 34 | ||||
-rwxr-xr-x | mox_test.py | 32 |
2 files changed, 66 insertions, 0 deletions
@@ -965,6 +965,40 @@ class In(Comparator): return '<sequence or map containing \'%s\'>' % self._key +class Not(Comparator): + """Checks whether a predicates is False. + + Example: + mock_dao.UpdateUsers(Not(ContainsKeyValue('stevepm', stevepm_user_info))) + """ + + def __init__(self, predicate): + """Initialize. + + Args: + # predicate: a Comparator instance. + """ + + assert isinstance(predicate, Comparator), ("predicate %r must be a" + " Comparator." % predicate) + self._predicate = predicate + + def equals(self, rhs): + """Check to see whether the predicate is False. + + Args: + rhs: A value that will be given in argument of the predicate. + + Returns: + bool + """ + + return not self._predicate.equals(rhs) + + def __repr__(self): + return '<not \'%s\'>' % self._predicate + + class ContainsKeyValue(Comparator): """Checks whether a key/value pair is in a dict parameter. diff --git a/mox_test.py b/mox_test.py index be35bae..5f00f0c 100755 --- a/mox_test.py +++ b/mox_test.py @@ -159,6 +159,38 @@ class InTest(unittest.TestCase): self.assert_(mox.In("test") == {"test" : "module"}) +class NotTest(unittest.TestCase): + """Test Not correctly identifies False predicates.""" + + def testItemInList(self): + """Should return True if the item is NOT in the list.""" + self.assert_(mox.Not(mox.In(42)) == [1, 2, 3]) + + def testKeyInDict(self): + """Should return True if the item is NOT a key in a dict.""" + self.assert_(mox.Not(mox.In("foo")) == {"key" : 42}) + + def testInvalidKeyWithNot(self): + """Should return False if they key is NOT in the dict.""" + self.assert_(mox.Not(mox.ContainsKeyValue("qux", 1)) == {"key": 2}) + + +class NotTest(unittest.TestCase): + """Test Not correctly identifies False predicates.""" + + def testItemInList(self): + """Should return True if the item is NOT in the list.""" + self.assert_(mox.Not(mox.In(42)) == [1, 2, 3]) + + def testKeyInDict(self): + """Should return True if the item is NOT a key in a dict.""" + self.assert_(mox.Not(mox.In("foo")) == {"key" : 42}) + + def testInvalidKeyWithNot(self): + """Should return False if they key is NOT in the dict.""" + self.assert_(mox.Not(mox.ContainsKeyValue("qux", 1)) == {"key": 2}) + + class StrContainsTest(unittest.TestCase): """Test StrContains correctly checks for substring occurrence of a parameter. """ |