예제 #1
0
    def test_some_false(self):
        data = ['x', 'x', 'y']
        result = _require_predicate_from_iterable(data, 'x')
        self.assertEqual(list(result), [Invalid('y')])

        data = [2, 2, 7]
        result = _require_predicate_from_iterable(data, 2)
        self.assertEqual(list(result), [Deviation(+5, 2)])
예제 #2
0
 def test_raised_error(self):
     """Exceptions should raise as normal (earlier implementation
     coerced errors to False).
     """
     capital_letters = lambda x: x.isupper()
     data = ['X', 'X', 10]  # <- Fails on 30 (int has no 'isupper' method).
     with self.assertRaises(AttributeError):
         result = _require_predicate_from_iterable(data, capital_letters)
예제 #3
0
 def test_duplicate_false(self):
     """Should return an error for every false result (incl. duplicates)."""
     data = ['10', '20', 'XX', 'XX', 'XX']  # <- Multiple XX's.
     result = _require_predicate_from_iterable(data, self.isdigit)
     self.assertEqual(
         list(result),
         [Invalid('XX'), Invalid('XX'),
          Invalid('XX')])
예제 #4
0
 def test_duplicate_false(self):
     """Should return an error for every non-match (incl. duplicates)."""
     data = iter(['a1', 'b2', 'XX', 'XX', 'XX'])  # <- Multiple XX's.
     result = _require_predicate_from_iterable(data, self.regex)
     self.assertEqual(
         list(result),
         [Invalid('XX'), Invalid('XX'),
          Invalid('XX')])
예제 #5
0
    def test_returned_error(self):
        """When a difference is returned, it is used in place of Invalid."""
        def func(x):
            if x == 'c':
                return Invalid("Letter 'c' is no good!")
            return True

        data = ['a', 'b', 'c']
        result = _require_predicate_from_iterable(data, func)
        self.assertEqual(list(result), [Invalid("Letter 'c' is no good!")])
예제 #6
0
    def test_returned_error(self):
        """When a difference is returned, it should be used in place of
        an auto-generated one.
        """
        def func(x):
            if x == 5:
                return Invalid("Five is right out!")
            return True

        data = [1, 2, 5]
        result = _require_predicate_from_iterable(data, func)
        self.assertEqual(list(result), [Invalid("Five is right out!")])
예제 #7
0
 def test_wildcard(self):
     data = [('x', 'y'), ('x', 'x')]
     result = _require_predicate_from_iterable(data, (Ellipsis, 'y'))
     self.assertEqual(list(result), [Invalid(('x', 'x'))])
예제 #8
0
 def test_some_false(self):
     data = [('x', 'y'), ('x', 'x')]
     result = _require_predicate_from_iterable(data, ('x', 'y'))
     self.assertEqual(list(result), [Invalid(('x', 'x'))])
예제 #9
0
 def test_all_true(self):
     data = [('x', 'y'), ('x', 'y')]
     result = _require_predicate_from_iterable(data, ('x', 'y'))
     self.assertIsNone(result)
예제 #10
0
    def test_notfound(self):
        def func(x):
            return False

        result = _require_predicate_from_iterable(NOTFOUND, func)
        self.assertEqual(result, Invalid(None))
예제 #11
0
 def test_duplicate_false(self):
     """Should return an error for every false result (incl. duplicates)."""
     data = ['x', 'x', 'y', 'y']  # <- Multiple invalid y's.
     result = _require_predicate_from_iterable(data, 'x')
     self.assertEqual(list(result), [Invalid('y'), Invalid('y')])
예제 #12
0
 def test_notfound(self):
     result = _require_predicate_from_iterable(NOTFOUND, self.regex)
     self.assertEqual(result, Invalid(None))
예제 #13
0
 def test_some_false(self):
     data = iter(['a1', 'b2', 'XX'])
     result = _require_predicate_from_iterable(data, self.regex)
     self.assertEqual(list(result), [Invalid('XX')])
예제 #14
0
 def test_all_true(self):
     data = iter(['a1', 'b2', 'c3'])
     result = _require_predicate_from_iterable(data, self.regex)
     self.assertIsNone(result)
예제 #15
0
 def test_some_false(self):
     """Elements that evaluate to False are returned as Invalid() errors."""
     data = ['10', '20', 'XX']
     result = _require_predicate_from_iterable(data, self.isdigit)
     self.assertEqual(list(result), [Invalid('XX')])
예제 #16
0
 def test_all_true(self):
     data = ['10', '20', '30']
     result = _require_predicate_from_iterable(data, self.isdigit)
     self.assertIsNone(result)