Esempio n. 1
0
    def test_init(self):
        untyped = iter([1, 2, 3, 4])

        typed = Result(untyped, list)
        self.assertEqual(typed.evaluation_type, list)

        typed = Result(iterable=untyped, evaluation_type=list)
        self.assertEqual(typed.evaluation_type, list)

        regex = 'evaluation_type must be a type, found instance of list'
        with self.assertRaisesRegex(TypeError, regex):
            typed = Result(untyped, [1, 2])
Esempio n. 2
0
    def test_unpacking_behavior(self):
        data = [(1, 2), (1, 4), (1, 8)]

        function = lambda x, y: x / y  # <- function takes 2 args
        result = _map_data(function, Result(data, list))
        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, list)
        self.assertEqual(result.fetch(), [0.5, 0.25, 0.125])

        function = lambda z: z[0] / z[1]  # <- function takes 1 arg
        result = _map_data(function, Result(data, list))
        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, list)
        self.assertEqual(result.fetch(), [0.5, 0.25, 0.125])
Esempio n. 3
0
    def test_dict_iter_of_lists(self):
        iterable = Result({'a': [1, 2], 'b': [3, 4]}, dict)
        result = _apply_to_data(_sqlite_sum, iterable)

        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, dict)
        self.assertEqual(result.fetch(), {'a': 3, 'b': 7})
Esempio n. 4
0
    def test_dataiter_dict_of_ints(self):
        iterable = Result({'a': 2, 'b': 3}, dict)
        result = _sqlite_distinct(iterable)

        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, dict)
        self.assertEqual(result.fetch(), {'a': 2, 'b': 3})
Esempio n. 5
0
    def test_dict_iter_of_integers(self):
        iterable = Result({'a': -5, 'b': None, 'c': 'xyz'}, dict)
        result = _apply_to_data(_sqlite_count, iterable)

        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, dict)
        self.assertEqual(result.fetch(), {'a': 1, 'b': 0, 'c': 1})
Esempio n. 6
0
    def test_dict_iter_of_integers(self):
        iterable = Result({'a': 2, 'b': 3, 'c': None}, dict)
        result = _apply_to_data(_sqlite_max, iterable)

        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, dict)
        self.assertEqual(result.fetch(), {'a': 2, 'b': 3, 'c': None})
Esempio n. 7
0
    def test_dataiter_dict_of_containers(self):
        iterable = Result({'a': [1, 2, 1, 2], 'b': (3, 4, 3)}, dict)
        result = _sqlite_distinct(iterable)

        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, dict)
        self.assertEqual(result.fetch(), {'a': [1, 2], 'b': (3, 4)})
Esempio n. 8
0
    def test_dict_iter_of_lists(self):
        iterable = Result({'a': [1, None], 'b': ['x', None, 0]}, dict)
        result = _apply_to_data(_sqlite_count, iterable)

        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, dict)
        self.assertEqual(result.fetch(), {'a': 1, 'b': 2})
Esempio n. 9
0
    def test_dataiter_dict_of_containers(self):
        iterable = Result({'a': [1, 2], 'b': (3, 4)}, dict)

        function = lambda x: x * 2
        result = _map_data(function, iterable)

        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, dict)
        self.assertEqual(result.fetch(), {'a': [2, 4], 'b': (6, 8)})
Esempio n. 10
0
    def test_dataiter_dict_of_ints(self):
        iterable = Result({'a': 2, 'b': 3}, dict)

        function = lambda x: x * 2
        result = _apply_data(function, iterable)

        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, dict)
        self.assertEqual(result.fetch(), {'a': 4, 'b': 6})
Esempio n. 11
0
    def test_dataiter_dict_of_mixed_iterables(self):
        iterable = Result({'a': iter([1, 2]), 'b': (3, 4)}, dict)

        function = lambda itr: [x * 2 for x in itr]
        result = _apply_data(function, iterable)

        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, dict)
        self.assertEqual(result.fetch(), {'a': [2, 4], 'b': [6, 8]})
Esempio n. 12
0
    def test_dict_iter_of_integers(self):
        iterable = Result({'a': 2, 'b': 3}, dict)

        function = lambda x, y: x + y
        result = _reduce_data(function, iterable)

        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, dict)
        self.assertEqual(result.fetch(), {'a': 2, 'b': 3})
Esempio n. 13
0
    def test_dict_iter_of_lists(self):
        iterable = Result({'a': [1, 3], 'b': [4, 5, 6]}, dict)

        iseven = lambda x: x % 2 == 0
        result = _filter_data(iseven, iterable)

        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, dict)
        self.assertEqual(result.fetch(), {'a': [], 'b': [4, 6]})
Esempio n. 14
0
    def test_unchanged(self):
        data = [1, 2, 3]
        self.assertIs(_normalize_lazy(data), data, 'should return original object')

        data = iter([1, 2, 3])
        self.assertIs(_normalize_lazy(data), data, 'should return original object')

        data = Result(iter([1, 2, 3]), evaluation_type=tuple)
        self.assertIs(_normalize_lazy(data), data, 'should return original object')
Esempio n. 15
0
    def test_dataiter_list(self):
        iterable = Result([1, 2, 3], list)

        function = lambda x: x * 2
        result = _map_data(function, iterable)

        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, list)
        self.assertEqual(result.fetch(), [2, 4, 6])
Esempio n. 16
0
    def test_settype_to_list(self):
        iterable = Result([1, 2, 3], set)  # <- Starts as 'set'.

        function = lambda x: x % 2
        result = _map_data(function, iterable)

        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, list)  # <- Now a 'list'.
        self.assertEqual(result.fetch(), [1, 0, 1])
Esempio n. 17
0
    def test_dict_iter_of_lists(self):
        iterable = Result(
            {
                'a': [1, 2, 3],
                'b': [None, 1, 2, 3, 'xx'],
                'c': [None, None]
            }, dict)
        result = _apply_to_data(_sqlite_max, iterable)

        self.assertIsInstance(result, Result)
        self.assertEqual(result.evaluation_type, dict)
        self.assertEqual(result.fetch(), {'a': 3, 'b': 'xx', 'c': None})
Esempio n. 18
0
    def test_normalize_requirement(self):
        requirement = [1, 2, 3]
        self.assertIs(_normalize_requirement(requirement),
                      requirement,
                      msg='should return original object')

        with self.assertRaises(TypeError, msg='cannot use generic iter'):
            _normalize_requirement(iter([1, 2, 3]))

        result_obj = Result(iter([1, 2, 3]), evaluation_type=tuple)
        output = _normalize_requirement(result_obj)
        self.assertIsInstance(output, tuple)
        self.assertEqual(output, (1, 2, 3))

        items = DictItems(iter([(0, 'x'), (1, 'y'), (2, 'z')]))
        output = _normalize_requirement(items)
        self.assertIsInstance(output, dict)
        self.assertEqual(output, {0: 'x', 1: 'y', 2: 'z'})
Esempio n. 19
0
 def test_list_iter(self):
     iterable = Result(['a', None, 3], list)
     result = _sqlite_count(iterable)
     self.assertEqual(result, 2)
Esempio n. 20
0
 def test_requirement(self):
     result = Result(DictItems([('a', 1), ('b', 2)]), evaluation_type=dict)
     normalized = _normalize_lazy(result)
     self.assertIsInstance(normalized, IterItems)
Esempio n. 21
0
 def test_result_objects(self):
     result_obj1 = Result(['2', '2'], evaluation_type=list)
     result_obj2 = Result(['2', '2'], evaluation_type=list)
     self.assertValid(result_obj1, result_obj2)
Esempio n. 22
0
 def test_result_object(self):
     result_obj = Result(iter([1, 2, 3]), evaluation_type=tuple)
     output = _normalize_eager(result_obj)
     self.assertIsInstance(output, tuple)
     self.assertEqual(output, (1, 2, 3))
Esempio n. 23
0
    def test_list_iter(self):
        iterable = Result([-4, -1, 2, 3], list)

        function = lambda x: x > 0
        result = _filter_data(function, iterable)
        self.assertEqual(result.fetch(), [2, 3])
Esempio n. 24
0
    def test_list_iter(self):
        iterable = Result([1, 2, 3], list)

        function = lambda x, y: x + y
        result = _reduce_data(function, iterable)
        self.assertEqual(result, 6)
Esempio n. 25
0
    def test_dict_iter_of_integers(self):
        iterable = Result({'a': 2, 'b': 3}, dict)

        iseven = lambda x: x % 2 == 0
        with self.assertRaises(TypeError):
            result = _filter_data(iseven, iterable)
Esempio n. 26
0
 def test_list_iter(self):
     iterable = Result([1, 2, 1, 2, 3], list)
     result = _sqlite_distinct(iterable)
     self.assertEqual(result.fetch(), [1, 2, 3])
Esempio n. 27
0
 def test_dataiter_list(self):
     iterable = Result([1, 2, 3], list)
     function = lambda itr: [x * 2 for x in itr]
     result = _apply_data(function, iterable)
     self.assertEqual(result, [2, 4, 6])
Esempio n. 28
0
 def test_list_iter(self):
     iterable = Result([1, 2, 3], list)
     result = _sqlite_sum(iterable)
     self.assertEqual(result, 6)
Esempio n. 29
0
 def test_list_iter(self):
     iterable = Result([1, 2, 3, 4], list)
     result = _sqlite_max(iterable)
     self.assertEqual(result, 4)
Esempio n. 30
0
 def test_Result(self):
     result = Result(DictItems([('a', 1), ('b', 2)]), evaluation_type=dict)
     normalized = DictItems(result)
     self.assertEqual(list(normalized), [('a', 1), ('b', 2)])