Ejemplo 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])
Ejemplo 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])
Ejemplo 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})
Ejemplo 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})
Ejemplo 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})
Ejemplo 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})
Ejemplo 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)})
Ejemplo 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})
Ejemplo 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)})
Ejemplo 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})
Ejemplo 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]})
Ejemplo 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})
Ejemplo 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]})
Ejemplo 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')
Ejemplo 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])
Ejemplo 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])
Ejemplo 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})
Ejemplo 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'})
Ejemplo n.º 19
0
 def test_list_iter(self):
     iterable = Result(['a', None, 3], list)
     result = _sqlite_count(iterable)
     self.assertEqual(result, 2)
Ejemplo 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)
Ejemplo 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)
Ejemplo 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))
Ejemplo 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])
Ejemplo 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)
Ejemplo 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)
Ejemplo 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])
Ejemplo 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])
Ejemplo n.º 28
0
 def test_list_iter(self):
     iterable = Result([1, 2, 3], list)
     result = _sqlite_sum(iterable)
     self.assertEqual(result, 6)
Ejemplo n.º 29
0
 def test_list_iter(self):
     iterable = Result([1, 2, 3, 4], list)
     result = _sqlite_max(iterable)
     self.assertEqual(result, 4)
Ejemplo 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)])