def test_flatten(self): # flatten nested lists self.assertEqual([1, 2, 3, 4], list(iters.flatten([[1, 2], [3, 4]]))) self.assertEqual([1, 2, 3, 4, 5, 6], list(iters.flatten([[1, 2], [3, [4, 5, 6]]]))) # flatten nested tuples, sets, and frozen sets self.assertEqual([1, 2, 3, 4, 5, 6], list(iters.flatten(((1, 2), (3, (4, 5, 6)))))) self.assertEqual([1, 2, 3], list(iters.flatten(set([1, frozenset([2, 3])])))) # flatten nested generators generators = ((num + 1 for num in range(0, n)) for n in range(1, 4)) self.assertEqual([1, 1, 2, 1, 2, 3], list(iters.flatten(generators))) # flat list should return itself self.assertEqual([1, 2, 3], list(iters.flatten([1, 2, 3]))) # Don't flatten strings/unicode, bytes, or bytearrays self.assertEqual([2, "abc", 1], list(iters.flatten([2, "abc", 1]))) self.assertEqual([2, b'abc', 1], list(iters.flatten([2, b'abc', 1]))) self.assertEqual([2, bytearray(b'abc'), 1], list(iters.flatten([2, bytearray(b'abc'), 1]))) self.assertEqual([bytearray(b'abc'), b'\xd1\x8f'.decode('utf8'), b'y'], list( iters.flatten([ bytearray(b'abc'), b'\xd1\x8f'.decode('utf8'), b'y' ])))
def test_flatten(self): self.assertEqual([1,2,3,4], list(iters.flatten([[1,2], [3,4]]))) self.assertEqual([1,2,3,4,5,6], list(iters.flatten([[1,2], [3, [4,5,6]]]))) # flat list should return themself self.assertEqual([1,2,3], list(iters.flatten([1,2,3]))) # string is not a list self.assertEqual([2,"abc",1], list(iters.flatten([2,"abc",1])))
def test_flatten(self): # flatten nested lists self.assertEqual([1, 2, 3, 4], list(iters.flatten([[1, 2], [3, 4]]))) self.assertEqual( [1, 2, 3, 4, 5, 6], list(iters.flatten([[1, 2], [3, [4, 5, 6]]])) ) # flatten nested tuples, sets, and frozen sets self.assertEqual( [1, 2, 3, 4, 5, 6], list(iters.flatten(((1, 2), (3, (4, 5, 6))))) ) self.assertEqual( [1, 2, 3], list(iters.flatten(set([1, frozenset([2, 3])]))) ) # flatten nested generators generators = ((num + 1 for num in range(0, n)) for n in range(1, 4)) self.assertEqual([1, 1, 2, 1, 2, 3], list(iters.flatten(generators))) # flat list should return itself self.assertEqual([1, 2, 3], list(iters.flatten([1, 2, 3]))) # Don't flatten strings/unicode, bytes, or bytearrays self.assertEqual([2, "abc", 1], list(iters.flatten([2, "abc", 1]))) self.assertEqual([2, b'abc', 1], list(iters.flatten([2, b'abc', 1]))) self.assertEqual([2, bytearray(b'abc'), 1], list(iters.flatten([2, bytearray(b'abc'), 1]))) self.assertEqual( [bytearray(b'abc'), b'\xd1\x8f'.decode('utf8'), b'y'], list(iters.flatten( [bytearray(b'abc'), b'\xd1\x8f'.decode('utf8'), b'y'] )))
def test_flatten(self): # flatten nested lists self.assertEqual([1,2,3,4], list(iters.flatten([[1,2], [3,4]]))) self.assertEqual([1,2,3,4,5,6], list(iters.flatten([[1,2], [3, [4,5,6]]]))) # flatten nested tuples, sets, and frozen sets self.assertEqual([1,2,3,4,5,6], list(iters.flatten(((1,2), (3, (4,5,6)))))) self.assertEqual([1,2,3], list(iters.flatten(set([1, frozenset([2,3])])))) # flatten nested generators generator_func = lambda n: (num for num in range(0, n)) generators = (generator_func(n) for n in range(1, 4)) self.assertEqual([0,0,1,0,1,2], list(iters.flatten(generators))) # flat list should return itself self.assertEqual([1,2,3], list(iters.flatten([1,2,3]))) # Don't flatten strings, bytes, or bytearrays self.assertEqual([2,"abc",1], list(iters.flatten([2,"abc",1]))) self.assertEqual([2, b'abc', 1], list(iters.flatten([2, b'abc', 1]))) barray = bytearray(b'abc') self.assertEqual([2, bytearray(b'abc'), 1], list(iters.flatten([2, bytearray(b'abc'), 1])))