Ejemplo n.º 1
0
    def test_pseudonumeric_types(self):
        self.assertEqual(deep_add([timedelta(1)], timedelta(0)), timedelta(1))

        class Num:
            def __init__(self, val=0):
                self.val = val

            def __add__(self, other):
                if isinstance(other, Num):
                    return Num(self.val + other.val)
                else:
                    return Num(self.val + other)

            __radd__ = __add__

            def __eq__(self, other):
                return self.val == other.val

        self.assertEqual(deep_add([[Num(1)], Num(2)]), Num(3))
        self.assertEqual(
            deep_add([
                [timedelta(1), timedelta(5)],
                [timedelta(6), timedelta(8)],
            ],
                     start=timedelta(2)),
            timedelta(22),
        )
Ejemplo n.º 2
0
 def test_start_value(self):
     numbers = [1, 2, 3, 4]
     self.assertEqual(deep_add(numbers, 0), 10)
     self.assertEqual(deep_add(numbers, 1), 11)
     self.assertEqual(deep_add(numbers, start=1), 11)
     self.assertEqual(deep_add([[], []], start=-10), -10)
Ejemplo n.º 3
0
 def test_other_numeric_types(self):
     self.assertEqual(deep_add([1.0, [3, 1.5]]), 5.5)
     self.assertEqual(deep_add([1.0, [3j]]), 1 + 3j)
     self.assertEqual(deep_add([Decimal('5.6'), 2]), Decimal('7.6'))
     self.assertEqual(deep_add([[Fraction(1)], Fraction(2)]), Fraction(3))
Ejemplo n.º 4
0
 def test_other_iterables(self):
     numbers = [1, 2, 3, 4]
     cubes_and_squares = ((n, (n**3, n**2)) for n in numbers)
     self.assertEqual(deep_add(cubes_and_squares), 140)
     self.assertEqual(deep_add([(1, 2), [3, {4, 5}]]), 15)
Ejemplo n.º 5
0
 def test_deeply_nested_iterables(self):
     self.assertEqual(deep_add([[1, 2], [3, [4, [[[5]], 6]]]]), 21)
Ejemplo n.º 6
0
 def test_non_numeric_types(self):
     with self.assertRaises(TypeError):
         deep_add([1, [2, None]])
Ejemplo n.º 7
0
 def test_shallow(self):
     self.assertEqual(deep_add([1, 2, 3, 4]), 10)
Ejemplo n.º 8
0
 def test_with_empty_lists(self):
     self.assertEqual(deep_add([1, [2, 3, []], [], 4]), 10)
     self.assertEqual(deep_add([]), 0)
Ejemplo n.º 9
0
def test_start_value():
    numbers = [1, 2, 3, 4]
    assert deep_add(numbers, 0) == 10
    assert deep_add(numbers, 1) == 11
    assert deep_add(numbers, start=1) == 11
    assert deep_add([[], []], start=-10) == -10
Ejemplo n.º 10
0
def test_shallow():
    assert deep_add([1, 2, 3, 4]) == 10
Ejemplo n.º 11
0
def test_other_iterables():
    numbers = [1, 2, 3, 4]
    cubes_and_squares = ((n, (n**3, n**2)) for n in numbers)
    assert deep_add(cubes_and_squares) == 140
    assert deep_add([(1, 2), [3, {4, 5}]]) == 15
Ejemplo n.º 12
0
def test_other_numeric_types():
    assert deep_add([1.0, [3, 1.5]]) == 5.5
    assert deep_add([1.0, [3j]]) == 1 + 3j
    assert deep_add([Decimal('5.6'), 2]) == Decimal('7.6')
    assert deep_add([[Fraction(1)], Fraction(2)]) == Fraction(3)
Ejemplo n.º 13
0
def test_non_numeric_types():
    with pytest.raises(TypeError):
        deep_add([1, [2, None]])
Ejemplo n.º 14
0
def test_deeply_nested_iterables():
    assert deep_add([[1, 2], [3, [4, [[[5]], 6]]]]) == 21
Ejemplo n.º 15
0
def test_with_empty_lists():
    assert deep_add([1, [2, 3, []], [], 4]) == 10
    assert deep_add([]) == 0