Пример #1
0
    def test_chain(self):
        add_one = fun.map(lambda x: x + "1")
        upper = fun.map(str.upper)

        result = fun.chain(
            ["a", "b", "c", "d"],
            add_one,
            upper,
            list
        )
        self.assertEqual(result, ["A1", "B1", "C1", "D1"])

        big_transform = [add_one, upper]

        result = fun.chain(
            ["a", "b", "c", "d"],
            *big_transform,
            list
        )
        self.assertEqual(result, ["A1", "B1", "C1", "D1"])

        result = fun.chain(
            ["a", "b", "c", "d"],
            *big_transform,
            fun.filter(lambda x: x < "C1"),
            list
        )
        self.assertEqual(result, ["A1", "B1"])

        result = fun.chain(
            ["a", "b", "c", "d"],
            *big_transform,
            fun.sort(reverse=True),
            list
        )
        self.assertEqual(result, ["D1", "C1", "B1", "A1"])

        side_effects = []
        save_value = fun.tap(side_effects.append)
        result = fun.chain(
            ["a", "b", "c", "d"],
            save_value, 
            *big_transform,
            save_value, 
            fun.sort(reverse=True),
            list
        )
        self.assertEqual(result, ["D1", "C1", "B1", "A1"])
        self.assertEqual(side_effects, [
            ["a", "b", "c", "d"],
            ["A1", "B1", "C1", "D1"]
        ])

        result = fun.chain(
            ["a", "b", "c", "d"],
            *big_transform,
            fun.reduce(lambda acc, x: acc + x),
        )
        self.assertEqual(result, "A1B1C1D1")
Пример #2
0
    def test_sort_with_key(self):
        sorter = fun.sort(lambda x: x[1])

        result = sorter([(1, "b"), (2, "a"), (3, "c")])

        self.assertEqual(list(result), [(2, "a"), (1, "b"), (3, "c")])
Пример #3
0
    def test_sort_in_reverse_with_tuples(self):
        sorter = fun.sort(reverse=True)

        result = sorter([('key3', 1), ('key1', 2), ('key2', 3)])

        self.assertEqual(list(result), [('key3', 1), ('key2', 3), ('key1', 2)])
Пример #4
0
    def test_sort_in_reverse(self):
        sorter = fun.sort(reverse=True)

        result = sorter([2, 4, 3, 1])

        self.assertEqual(list(result), [4, 3, 2, 1])
Пример #5
0
    def test_sort_with_defaults_and_tuples(self):
        sorter = fun.sort()

        result = sorter([('key3', 1), ('key1', 2), ('key2', 3)])

        self.assertEqual(list(result), [('key1', 2), ('key2', 3), ('key3', 1)])
Пример #6
0
    def test_sort_with_defaults(self):
        sorter = fun.sort()

        result = sorter([2, 4, 3, 1])

        self.assertEqual(list(result), [1, 2, 3, 4])