예제 #1
0
    def test_string_or_noniterable(self):
        data = 'a'
        result = _require_set(data, self.requirement)

        result = list(result)
        self.assertEqual(len(result), 2)
        self.assertIn(Missing('b'), result)
        self.assertIn(Missing('c'), result)
예제 #2
0
    def test_missing_and_extra(self):
        data = iter(['a', 'c', 'x'])
        result = _require_set(data, self.requirement)

        result = list(result)
        self.assertEqual(len(result), 2)
        self.assertIn(Missing('b'), result)
        self.assertIn(Extra('x'), result)
예제 #3
0
    def test_atomic_object_handling(self):
        # Non-containers are, of course, treated as atomic objects.
        requirement = set([777])
        self.assertIsNone(
            _require_set([777], requirement),
            msg='list containing one int',
        )
        self.assertIsNone(
            _require_set(777, requirement),
            msg='int, no container',
        )

        # Strings should treated as an atomic objects.
        requirement = set(['abc'])
        self.assertIsNone(
            _require_set(['abc'], requirement),
            msg='list containing one str',
        )
        self.assertIsNone(
            _require_set('abc', requirement),
            msg='single strings should be treated as atomic objects',
        )

        # Tuples should also be treated as an atomic objects.
        requirement = set([('a', 'b', 'c')])
        self.assertIsNone(
            _require_set([('a', 'b', 'c')], requirement),
            msg='list containing one tuple',
        )
        self.assertIsNone(
            _require_set(('a', 'b', 'c'), requirement),
            msg='single tuples should be treated as atomic objects',
        )
예제 #4
0
 def test_notfound(self):
     result = _require_set(NOTFOUND, set(['a']))
     self.assertEqual(list(result), [Missing('a')])
예제 #5
0
 def test_duplicate_extras(self):
     """Should return only one error for each distinct extra value."""
     data = iter(['a', 'b', 'c', 'x', 'x', 'x'])  # <- Multiple x's.
     result = _require_set(data, self.requirement)
     self.assertEqual(list(result), [Extra('x')])
예제 #6
0
 def test_extra(self):
     data = iter(['a', 'b', 'c', 'x'])
     result = _require_set(data, self.requirement)
     self.assertEqual(list(result), [Extra('x')])
예제 #7
0
 def test_missing(self):
     data = iter(['a', 'b'])
     result = _require_set(data, self.requirement)
     self.assertEqual(list(result), [Missing('c')])
예제 #8
0
 def test_no_difference(self):
     data = iter(['a', 'b', 'c'])
     result = _require_set(data, self.requirement)
     self.assertIsNone(result)  # No difference, returns None.