def METHOD_NAME(self):
    """Zip file with a complex directory structure can be read by ZipFile / StreamingZipFile properly"""
    zip_contents = self.create_zip_complex()
    expected_zinfos = [
        ('a/', 0, True, b''),
        ('a/b/', 0, True, b''),
        ('a/b/file.txt', 11, False, b'hello world'),
        ('c/', 0, True, b''),
        ('c/d/', 0, True, b''),
        ('c/d/e/', 0, True, b''),
        ('file.txt', 11, False, b'hello world'),
    ]
    with ZipFile(BytesIO(zip_contents)) as zf:
        zinfos = [
            (zinfo.filename, zinfo.file_size, zinfo.is_dir(), zf.open(zinfo).read())
            for zinfo in zf.infolist()
        ]
        self.assertEqual(sorted(zinfos), expected_zinfos)
    with StreamingZipFile(UnseekableBytesIO(zip_contents)) as zf:
        zinfos = [
            (zinfo.filename, zinfo.file_size, zinfo.is_dir(), zf.open(zinfo).read())
            for zinfo in zf
        ]
        self.assertEqual(sorted(zinfos), expected_zinfos)