def test_different_length_lists(self): in1 = [1, 2, 3] in2 = [4, 5, 6, 7, 8] in3 = [9] out1 = [1, 4, 9, 2, 5, 3, 6, 7, 8] self.assertIterableEqual(interleave(in1, in2, in3), out1) self.assertIterableEqual( interleave([1, 2], [3], [4, 5, 6], [7, 8], [9]), [1, 3, 4, 7, 9, 2, 5, 8, 6], )
def test_response_is_iterator(self): in1 = [1, 2, 3] in2 = [4, 5, 6] squares = (n**2 for n in in1) output = interleave(in1, in2) self.assertIs(iter(output), iter(output)) output = interleave(squares, squares) self.assertEqual(next(output), 1) self.assertEqual(next(output), 4) self.assertEqual(next(squares), 9) iterator = interleave(count(), count()) self.assertEqual(next(iterator), next(iterator))
def test_more_than_two_arguments(self): in1 = [1, 2, 3] in2 = [4, 5, 6] in3 = [7, 8, 9] out = [1, 4, 7, 2, 5, 8, 3, 6, 9] self.assertIterableEqual(interleave(in1, in2, in3), out)
def test_non_sequences(self): in1 = [1, 2, 3, 4] in2 = (n**2 for n in in1) out = [1, 1, 2, 4, 3, 9, 4, 16] self.assertIterableEqual(interleave(in1, in2), out)
def test_none_value(self): in1 = [1, 2, 3, None] in2 = [4, 5, 6, 7] out = [1, 4, 2, 5, 3, 6, None, 7] self.assertIterableEqual(interleave(in1, in2), out)
def test_four_items_each(self): in1 = [1, 2, 3, 4] in2 = [5, 6, 7, 8] out = [1, 5, 2, 6, 3, 7, 4, 8] self.assertIterableEqual(interleave(in1, in2), out)
def test_two_items_each(self): self.assertIterableEqual(interleave([1, 2], [3, 4]), [1, 3, 2, 4])
def test_single_item_each(self): self.assertIterableEqual(interleave([1], [2]), [1, 2])
def test_empty_lists(self): self.assertIterableEqual(interleave([], []), [])