示例#1
0
    def test_broken_comparison(self):
        class BadClass(object):
            def __eq__(self, other):
                raise Exception('I have betrayed you!')

            def __hash__(self):
                return hash((self.__class__, 101))

        bad_instance = BadClass()
        msg = 'errors should bubble-up for debugging'
        with self.assertRaises(Exception, msg=msg):
            _require_predicate(bad_instance, 10)
示例#2
0
 def test_custom_difference(self):
     """When a predicate function returns a difference object,
     it should be used in place of an auto-generated one.
     """
     pred = lambda x: Invalid('custom')
     result = _require_predicate('A', pred, False)
     self.assertEqual(result, Invalid('custom'))
示例#3
0
    def test_eq(self):
        """Should use __eq__() comparison, not __ne__()."""
        class EqualsAll(object):
            def __init__(_self):
                _self.times_checked = 0

            def __eq__(_self, other):
                _self.times_checked += 1
                return True

            def __ne__(_self, other):
                return NotImplemented

        requirement = EqualsAll()
        result = _require_predicate('A', requirement)
        self.assertEqual(requirement.times_checked, 1)
示例#4
0
 def test_dict_comparison(self):
     result = _require_predicate({'a': 1}, {'a': 2}, True)
     self.assertEqual(result, Invalid({'a': 1}, {'a': 2}))
示例#5
0
 def test_invalid(self):
     result = _require_predicate('XX', 10, True)
     self.assertEqual(result, Invalid('XX', 10))
示例#6
0
 def test_deviation(self):
     result = _require_predicate(11, 10, True)
     self.assertEqual(result, Deviation(+1, 10))
示例#7
0
 def test_some_invalid(self):
     result = _require_predicate('XX', 'A', True)
     self.assertEqual(result, Invalid('XX', 'A'))
示例#8
0
 def test_all_true(self):
     result = _require_predicate('A', 'A', True)
     self.assertIsNone(result)