コード例 #1
0
ファイル: test_compare.py プロジェクト: asfaltboy/datatest
    def test_make_rows(self):
        make_set = lambda data: set(frozenset(row.items()) for row in data)

        result = CompareSet(['aaa', 'bbb', 'ccc'])
        iterable = result.make_rows('foo')
        expected = [{'foo': 'aaa'}, {'foo': 'bbb'}, {'foo': 'ccc'}]
        self.assertEqual(make_set(expected), make_set(iterable))

        result = CompareSet(['aaa', 'bbb', 'ccc'])
        iterable = result.make_rows(['foo'])  # <- Single-item list.
        expected = [{'foo': 'aaa'}, {'foo': 'bbb'}, {'foo': 'ccc'}]
        self.assertEqual(make_set(expected), make_set(iterable))

        result = CompareSet([
            ('aaa', 1),
            ('bbb', 2),
            ('ccc', 3)
        ])
        iterable = result.make_rows(['foo', 'bar'])
        expected = [
            {'foo': 'aaa', 'bar': 1},
            {'foo': 'bbb', 'bar': 2},
            {'foo': 'ccc', 'bar': 3},
        ]
        self.assertEqual(make_set(expected), make_set(iterable))

        result = CompareSet(['aaa', 'bbb', 'ccc'])
        with self.assertRaises(AssertionError):
            iterable = result.make_rows(['foo', 'bar'])  # Too many *names*.

        result = CompareSet([('aaa', 1), ('bbb', 2), ('ccc', 3)])
        with self.assertRaises(AssertionError):
            iterable = result.make_rows(['foo'])  # Too few *names*.
コード例 #2
0
ファイル: test_compare.py プロジェクト: asfaltboy/datatest
    def test_eq(self):
        data = set([1, 2, 3, 4])

        a = CompareSet(data)
        b = CompareSet(data)
        self.assertEqual(a, b)

        # Test coersion.
        a = CompareSet(data)
        b = [1, 2, 3, 4]  # <- Should be coerced into CompareSet internally.
        self.assertEqual(a, b)
コード例 #3
0
ファイル: test_compare.py プロジェクト: yochju/datatest
    def test_eq(self):
        data = set([1, 2, 3, 4])

        a = CompareSet(data)
        b = CompareSet(data)
        self.assertEqual(a, b)

        # Test coersion.
        a = CompareSet(data)
        b = [1, 2, 3, 4]  # <- Should be coerced into CompareSet internally.
        self.assertEqual(a, b)

        # Test non-comparable types.
        a = CompareSet(data)
        self.assertNotEqual(a, None)
        self.assertNotEqual(a, False)
        self.assertNotEqual(a, 0)
コード例 #4
0
ファイル: test_compare.py プロジェクト: yochju/datatest
    def test_all_fn(self):
        obj = CompareSet(['aaa', 'bbb', 'ddd'])
        key = lambda x: len(x) == 3
        self.assertTrue(obj.all(key))

        obj = CompareSet(['aaa1', 'aaa2', 'bbb1'])
        key = lambda x: str(x).startswith('aaa')
        self.assertFalse(obj.all(key))
コード例 #5
0
ファイル: test_compare.py プロジェクト: yochju/datatest
    def test_init(self):
        data = set([1, 2, 3, 4])

        x = CompareSet(data)  # Data set.
        self.assertEqual(data, x)

        x = CompareSet(list(data))  # Data list.
        self.assertEqual(data, x)

        x = CompareSet(tuple(data))  # Data tuple.
        self.assertEqual(data, x)

        data_gen = (v for v in data)  # Data generator.
        x = CompareSet(data_gen)
        self.assertEqual(data, x)

        # Data mapping (type error).
        data_dict = dict(enumerate(data))
        with self.assertRaises(TypeError):
            x = CompareSet(data_dict)

        x = CompareSet(set())
        self.assertEqual(set(), x)
コード例 #6
0
ファイル: test_compare.py プロジェクト: yochju/datatest
    def test_compare(self):
        a = CompareSet(['aaa', 'bbb', 'ddd'])
        b = CompareSet(['aaa', 'bbb', 'ccc'])
        expected = [Extra('ddd'), Missing('ccc')]
        self.assertEqual(expected, a.compare(b))

        a = CompareSet(['aaa', 'bbb', 'ccc'])
        b = CompareSet(['aaa', 'bbb', 'ccc'])
        self.assertEqual([], a.compare(b), ('When there is no difference, '
                                            'compare should return an empty '
                                            'list.'))

        # Test callable other (all True).
        result = a.compare(lambda x: len(x) == 3)
        self.assertEqual([], result)

        # Test callable other (some False).
        result = a.compare(lambda x: x.startswith('b'))
        expected = set([Invalid('aaa'), Invalid('ccc')])
        self.assertEqual(expected, set(result))

        # Test callable other, multiple arguments (all True).
        a = CompareSet([(1, 1), (1, 2), (2, 1), (2, 2)])
        result = a.compare(lambda x, y: x + y > 0)
        self.assertEqual([], result)

        # Test callable other, using single vararg (all True).
        a = CompareSet([(1, 1), (1, 2), (2, 1), (2, 2)])
        result = a.compare(lambda *x: x[0] + x[1] > 0)
        self.assertEqual([], result)

        # Test callable other, multiple arguments (some False).
        a = CompareSet([(1, 1), (1, 2), (2, 1), (2, 2)])
        result = a.compare(lambda x, y: x != y)
        expected = set([Invalid((1, 1)), Invalid((2, 2))])
        self.assertEqual(expected, set(result))

        # Test subset (less-than-or-equal).
        a = CompareSet(['aaa', 'bbb', 'ddd'])
        b = CompareSet(['aaa', 'bbb', 'ccc'])
        expected = [Extra('ddd')]
        self.assertEqual(expected, a.compare(b, op='<='))

        # Test strict subset (less-than).
        a = CompareSet(['aaa', 'bbb'])
        b = CompareSet(['aaa', 'bbb', 'ccc'])
        self.assertEqual([], a.compare(b, op='<'))

        # Test strict subset (less-than) assertion violation.
        a = CompareSet(['aaa', 'bbb', 'ccc'])
        b = CompareSet(['aaa', 'bbb', 'ccc'])
        self.assertEqual([NotProperSubset()], a.compare(b, op='<'))

        # Test superset (greater-than-or-equal).
        a = CompareSet(['aaa', 'bbb', 'ccc'])
        b = CompareSet(['aaa', 'bbb', 'ddd'])
        expected = [Missing('ddd')]
        self.assertEqual(expected, a.compare(b, op='>='))

        # Test superset subset (greater-than).
        a = CompareSet(['aaa', 'bbb', 'ccc'])
        b = CompareSet(['aaa', 'bbb'])
        self.assertEqual([], a.compare(b, op='>'))

        # Test superset subset (greater-than) assertion violation.
        a = CompareSet(['aaa', 'bbb', 'ccc'])
        b = CompareSet(['aaa', 'bbb', 'ccc'])
        self.assertEqual([NotProperSuperset()], a.compare(b, op='>'))
コード例 #7
0
ファイル: test_compare.py プロジェクト: yochju/datatest
 def test_ne(self):
     a = CompareSet(set([1, 2, 3]))
     b = CompareSet(set([1, 2, 3, 4]))
     self.assertTrue(a != b)
コード例 #8
0
ファイル: test_compare.py プロジェクト: yochju/datatest
    def test_make_rows(self):
        make_set = lambda data: set(frozenset(row.items()) for row in data)

        result = CompareSet(['aaa', 'bbb', 'ccc'])
        iterable = result.make_rows('foo')
        expected = [{'foo': 'aaa'}, {'foo': 'bbb'}, {'foo': 'ccc'}]
        self.assertEqual(make_set(expected), make_set(iterable))

        result = CompareSet(['aaa', 'bbb', 'ccc'])
        iterable = result.make_rows(['foo'])  # <- Single-item list.
        expected = [{'foo': 'aaa'}, {'foo': 'bbb'}, {'foo': 'ccc'}]
        self.assertEqual(make_set(expected), make_set(iterable))

        result = CompareSet([('aaa', 1), ('bbb', 2), ('ccc', 3)])
        iterable = result.make_rows(['foo', 'bar'])
        expected = [
            {
                'foo': 'aaa',
                'bar': 1
            },
            {
                'foo': 'bbb',
                'bar': 2
            },
            {
                'foo': 'ccc',
                'bar': 3
            },
        ]
        self.assertEqual(make_set(expected), make_set(iterable))

        result = CompareSet(['aaa', 'bbb', 'ccc'])
        with self.assertRaises(AssertionError):
            iterable = result.make_rows(['foo', 'bar'])  # Too many *names*.

        result = CompareSet([('aaa', 1), ('bbb', 2), ('ccc', 3)])
        with self.assertRaises(AssertionError):
            iterable = result.make_rows(['foo'])  # Too few *names*.
コード例 #9
0
ファイル: test_compare.py プロジェクト: yochju/datatest
 def test_repr(self):
     result = CompareSet(set([1]))
     regex = r'^CompareSet\([\[\{]1[\}\]]\)$'
     self.assertRegex(repr(result), regex)
コード例 #10
0
ファイル: test_compare.py プロジェクト: asfaltboy/datatest
    def test_compare(self):
        a = CompareSet(['aaa','bbb','ddd'])
        b = CompareSet(['aaa','bbb','ccc'])
        expected = [Extra('ddd'), Missing('ccc')]
        self.assertEqual(expected, a.compare(b))

        a = CompareSet(['aaa','bbb','ccc'])
        b = CompareSet(['aaa','bbb','ccc'])
        self.assertEqual([], a.compare(b), ('When there is no difference, '
                                            'compare should return an empty '
                                            'list.'))

        # Test callable other (all True).
        result = a.compare(lambda x: len(x) == 3)
        self.assertEqual([], result)

        # Test callable other (some False).
        result = a.compare(lambda x: x.startswith('b'))
        expected = set([Invalid('aaa'), Invalid('ccc')])
        self.assertEqual(expected, set(result))

        # Test callable other, multiple arguments (all True).
        a = CompareSet([(1, 1), (1, 2), (2, 1), (2, 2)])
        result = a.compare(lambda x, y: x + y > 0)
        self.assertEqual([], result)

        # Test callable other, using single vararg (all True).
        a = CompareSet([(1, 1), (1, 2), (2, 1), (2, 2)])
        result = a.compare(lambda *x: x[0] + x[1] > 0)
        self.assertEqual([], result)

        # Test callable other, multiple arguments (some False).
        a = CompareSet([(1, 1), (1, 2), (2, 1), (2, 2)])
        result = a.compare(lambda x, y: x != y)
        expected = set([Invalid((1, 1)), Invalid((2, 2))])
        self.assertEqual(expected, set(result))

        # Test subset (less-than-or-equal).
        a = CompareSet(['aaa','bbb','ddd'])
        b = CompareSet(['aaa','bbb','ccc'])
        expected = [Extra('ddd')]
        self.assertEqual(expected, a.compare(b, op='<='))

        # Test strict subset (less-than).
        a = CompareSet(['aaa','bbb'])
        b = CompareSet(['aaa','bbb','ccc'])
        self.assertEqual([], a.compare(b, op='<'))

        # Test strict subset (less-than) assertion violation.
        a = CompareSet(['aaa','bbb','ccc'])
        b = CompareSet(['aaa','bbb','ccc'])
        self.assertEqual([NotProperSubset()], a.compare(b, op='<'))

        # Test superset (greater-than-or-equal).
        a = CompareSet(['aaa','bbb','ccc'])
        b = CompareSet(['aaa','bbb','ddd'])
        expected = [Missing('ddd')]
        self.assertEqual(expected, a.compare(b, op='>='))

        # Test superset subset (greater-than).
        a = CompareSet(['aaa','bbb','ccc'])
        b = CompareSet(['aaa','bbb'])
        self.assertEqual([], a.compare(b, op='>'))

        # Test superset subset (greater-than) assertion violation.
        a = CompareSet(['aaa','bbb','ccc'])
        b = CompareSet(['aaa','bbb','ccc'])
        self.assertEqual([NotProperSuperset()], a.compare(b, op='>'))