Best Python code snippet using fMBT_python
file_io_test.py
Source:file_io_test.py  
...29    file_io.create_dir(self._base_dir)30  def tearDown(self):31    file_io.delete_recursively(self._base_dir)32  def testEmptyFilename(self):33    f = file_io.FileIO("", mode="r")34    with self.assertRaises(errors.NotFoundError):35      _ = f.read()36  def testFileDoesntExist(self):37    file_path = os.path.join(self._base_dir, "temp_file")38    self.assertFalse(file_io.file_exists(file_path))39    with self.assertRaises(errors.NotFoundError):40      _ = file_io.read_file_to_string(file_path)41  def testWriteToString(self):42    file_path = os.path.join(self._base_dir, "temp_file")43    file_io.write_string_to_file(file_path, "testing")44    self.assertTrue(file_io.file_exists(file_path))45    file_contents = file_io.read_file_to_string(file_path)46    self.assertEqual("testing", file_contents)47  def testAtomicWriteStringToFile(self):48    file_path = os.path.join(self._base_dir, "temp_file")49    file_io.atomic_write_string_to_file(file_path, "testing")50    self.assertTrue(file_io.file_exists(file_path))51    file_contents = file_io.read_file_to_string(file_path)52    self.assertEqual("testing", file_contents)53  def testAtomicWriteStringToFileOverwriteFalse(self):54    file_path = os.path.join(self._base_dir, "temp_file")55    file_io.atomic_write_string_to_file(file_path, "old", overwrite=False)56    with self.assertRaises(errors.AlreadyExistsError):57      file_io.atomic_write_string_to_file(file_path, "new", overwrite=False)58    file_contents = file_io.read_file_to_string(file_path)59    self.assertEqual("old", file_contents)60    file_io.delete_file(file_path)61    file_io.atomic_write_string_to_file(file_path, "new", overwrite=False)62    file_contents = file_io.read_file_to_string(file_path)63    self.assertEqual("new", file_contents)64  def testReadBinaryMode(self):65    file_path = os.path.join(self._base_dir, "temp_file")66    file_io.write_string_to_file(file_path, "testing")67    with file_io.FileIO(file_path, mode="rb") as f:68      self.assertEqual(b"testing", f.read())69  def testWriteBinaryMode(self):70    file_path = os.path.join(self._base_dir, "temp_file")71    file_io.FileIO(file_path, "wb").write("testing")72    with file_io.FileIO(file_path, mode="r") as f:73      self.assertEqual("testing", f.read())74  def testAppend(self):75    file_path = os.path.join(self._base_dir, "temp_file")76    with file_io.FileIO(file_path, mode="w") as f:77      f.write("begin\n")78    with file_io.FileIO(file_path, mode="a") as f:79      f.write("a1\n")80    with file_io.FileIO(file_path, mode="a") as f:81      f.write("a2\n")82    with file_io.FileIO(file_path, mode="r") as f:83      file_contents = f.read()84      self.assertEqual("begin\na1\na2\n", file_contents)85  def testMultipleFiles(self):86    file_prefix = os.path.join(self._base_dir, "temp_file")87    for i in range(5000):88      f = file_io.FileIO(file_prefix + str(i), mode="w+")89      f.write("testing")90      f.flush()91      self.assertEqual("testing", f.read())92      f.close()93  def testMultipleWrites(self):94    file_path = os.path.join(self._base_dir, "temp_file")95    with file_io.FileIO(file_path, mode="w") as f:96      f.write("line1\n")97      f.write("line2")98    file_contents = file_io.read_file_to_string(file_path)99    self.assertEqual("line1\nline2", file_contents)100  def testFileWriteBadMode(self):101    file_path = os.path.join(self._base_dir, "temp_file")102    with self.assertRaises(errors.PermissionDeniedError):103      file_io.FileIO(file_path, mode="r").write("testing")104  def testFileReadBadMode(self):105    file_path = os.path.join(self._base_dir, "temp_file")106    file_io.FileIO(file_path, mode="w").write("testing")107    self.assertTrue(file_io.file_exists(file_path))108    with self.assertRaises(errors.PermissionDeniedError):109      file_io.FileIO(file_path, mode="w").read()110  def testFileDelete(self):111    file_path = os.path.join(self._base_dir, "temp_file")112    file_io.FileIO(file_path, mode="w").write("testing")113    file_io.delete_file(file_path)114    self.assertFalse(file_io.file_exists(file_path))115  def testFileDeleteFail(self):116    file_path = os.path.join(self._base_dir, "temp_file")117    with self.assertRaises(errors.NotFoundError):118      file_io.delete_file(file_path)119  def testGetMatchingFiles(self):120    dir_path = os.path.join(self._base_dir, "temp_dir")121    file_io.create_dir(dir_path)122    files = ["file1.txt", "file2.txt", "file3.txt", "file*.txt"]123    for name in files:124      file_path = os.path.join(dir_path, name)125      file_io.FileIO(file_path, mode="w").write("testing")126    expected_match = [os.path.join(dir_path, name) for name in files]127    self.assertItemsEqual(128        file_io.get_matching_files(os.path.join(dir_path, "file*.txt")),129        expected_match)130    self.assertItemsEqual(file_io.get_matching_files(tuple()), [])131    files_subset = [132        os.path.join(dir_path, files[0]), os.path.join(dir_path, files[2])133    ]134    self.assertItemsEqual(135        file_io.get_matching_files(files_subset), files_subset)136    file_io.delete_recursively(dir_path)137    self.assertFalse(file_io.file_exists(os.path.join(dir_path, "file3.txt")))138  def testCreateRecursiveDir(self):139    dir_path = os.path.join(self._base_dir, "temp_dir/temp_dir1/temp_dir2")140    file_io.recursive_create_dir(dir_path)141    file_io.recursive_create_dir(dir_path)  # repeat creation142    file_path = os.path.join(dir_path, "temp_file")143    file_io.FileIO(file_path, mode="w").write("testing")144    self.assertTrue(file_io.file_exists(file_path))145    file_io.delete_recursively(os.path.join(self._base_dir, "temp_dir"))146    self.assertFalse(file_io.file_exists(file_path))147  def testCopy(self):148    file_path = os.path.join(self._base_dir, "temp_file")149    file_io.FileIO(file_path, mode="w").write("testing")150    copy_path = os.path.join(self._base_dir, "copy_file")151    file_io.copy(file_path, copy_path)152    self.assertTrue(file_io.file_exists(copy_path))153    f = file_io.FileIO(file_path, mode="r")154    self.assertEqual("testing", f.read())155    self.assertEqual(7, f.tell())156  def testCopyOverwrite(self):157    file_path = os.path.join(self._base_dir, "temp_file")158    file_io.FileIO(file_path, mode="w").write("testing")159    copy_path = os.path.join(self._base_dir, "copy_file")160    file_io.FileIO(copy_path, mode="w").write("copy")161    file_io.copy(file_path, copy_path, overwrite=True)162    self.assertTrue(file_io.file_exists(copy_path))163    self.assertEqual("testing", file_io.FileIO(file_path, mode="r").read())164  def testCopyOverwriteFalse(self):165    file_path = os.path.join(self._base_dir, "temp_file")166    file_io.FileIO(file_path, mode="w").write("testing")167    copy_path = os.path.join(self._base_dir, "copy_file")168    file_io.FileIO(copy_path, mode="w").write("copy")169    with self.assertRaises(errors.AlreadyExistsError):170      file_io.copy(file_path, copy_path, overwrite=False)171  def testRename(self):172    file_path = os.path.join(self._base_dir, "temp_file")173    file_io.FileIO(file_path, mode="w").write("testing")174    rename_path = os.path.join(self._base_dir, "rename_file")175    file_io.rename(file_path, rename_path)176    self.assertTrue(file_io.file_exists(rename_path))177    self.assertFalse(file_io.file_exists(file_path))178  def testRenameOverwrite(self):179    file_path = os.path.join(self._base_dir, "temp_file")180    file_io.FileIO(file_path, mode="w").write("testing")181    rename_path = os.path.join(self._base_dir, "rename_file")182    file_io.FileIO(rename_path, mode="w").write("rename")183    file_io.rename(file_path, rename_path, overwrite=True)184    self.assertTrue(file_io.file_exists(rename_path))185    self.assertFalse(file_io.file_exists(file_path))186  def testRenameOverwriteFalse(self):187    file_path = os.path.join(self._base_dir, "temp_file")188    file_io.FileIO(file_path, mode="w").write("testing")189    rename_path = os.path.join(self._base_dir, "rename_file")190    file_io.FileIO(rename_path, mode="w").write("rename")191    with self.assertRaises(errors.AlreadyExistsError):192      file_io.rename(file_path, rename_path, overwrite=False)193    self.assertTrue(file_io.file_exists(rename_path))194    self.assertTrue(file_io.file_exists(file_path))195  def testDeleteRecursivelyFail(self):196    fake_dir_path = os.path.join(self._base_dir, "temp_dir")197    with self.assertRaises(errors.NotFoundError):198      file_io.delete_recursively(fake_dir_path)199  def testIsDirectory(self):200    dir_path = os.path.join(self._base_dir, "test_dir")201    # Failure for a non-existing dir.202    self.assertFalse(file_io.is_directory(dir_path))203    file_io.create_dir(dir_path)204    self.assertTrue(file_io.is_directory(dir_path))205    file_path = os.path.join(dir_path, "test_file")206    file_io.FileIO(file_path, mode="w").write("test")207    # False for a file.208    self.assertFalse(file_io.is_directory(file_path))209    # Test that the value returned from `stat()` has `is_directory` set.210    file_statistics = file_io.stat(dir_path)211    self.assertTrue(file_statistics.is_directory)212  def testListDirectory(self):213    dir_path = os.path.join(self._base_dir, "test_dir")214    file_io.create_dir(dir_path)215    files = ["file1.txt", "file2.txt", "file3.txt"]216    for name in files:217      file_path = os.path.join(dir_path, name)218      file_io.FileIO(file_path, mode="w").write("testing")219    subdir_path = os.path.join(dir_path, "sub_dir")220    file_io.create_dir(subdir_path)221    subdir_file_path = os.path.join(subdir_path, "file4.txt")222    file_io.FileIO(subdir_file_path, mode="w").write("testing")223    dir_list = file_io.list_directory(dir_path)224    self.assertItemsEqual(files + ["sub_dir"], dir_list)225  def testListDirectoryFailure(self):226    dir_path = os.path.join(self._base_dir, "test_dir")227    with self.assertRaises(errors.NotFoundError):228      file_io.list_directory(dir_path)229  def _setupWalkDirectories(self, dir_path):230    # Creating a file structure as follows231    # test_dir -> file: file1.txt; dirs: subdir1_1, subdir1_2, subdir1_3232    # subdir1_1 -> file: file3.txt233    # subdir1_2 -> dir: subdir2234    file_io.create_dir(dir_path)235    file_io.FileIO(236        os.path.join(dir_path, "file1.txt"), mode="w").write("testing")237    sub_dirs1 = ["subdir1_1", "subdir1_2", "subdir1_3"]238    for name in sub_dirs1:239      file_io.create_dir(os.path.join(dir_path, name))240    file_io.FileIO(241        os.path.join(dir_path, "subdir1_1/file2.txt"),242        mode="w").write("testing")243    file_io.create_dir(os.path.join(dir_path, "subdir1_2/subdir2"))244  def testWalkInOrder(self):245    dir_path = os.path.join(self._base_dir, "test_dir")246    self._setupWalkDirectories(dir_path)247    # Now test the walk (in_order = True)248    all_dirs = []249    all_subdirs = []250    all_files = []251    for (w_dir, w_subdirs, w_files) in file_io.walk(dir_path, in_order=True):252      all_dirs.append(w_dir)253      all_subdirs.append(w_subdirs)254      all_files.append(w_files)255    self.assertItemsEqual(all_dirs, [dir_path] + [256        os.path.join(dir_path, item)257        for item in258        ["subdir1_1", "subdir1_2", "subdir1_2/subdir2", "subdir1_3"]259    ])260    self.assertEqual(dir_path, all_dirs[0])261    self.assertLess(262        all_dirs.index(os.path.join(dir_path, "subdir1_2")),263        all_dirs.index(os.path.join(dir_path, "subdir1_2/subdir2")))264    self.assertItemsEqual(all_subdirs[1:5], [[], ["subdir2"], [], []])265    self.assertItemsEqual(all_subdirs[0],266                          ["subdir1_1", "subdir1_2", "subdir1_3"])267    self.assertItemsEqual(all_files, [["file1.txt"], ["file2.txt"], [], [], []])268    self.assertLess(269        all_files.index(["file1.txt"]), all_files.index(["file2.txt"]))270  def testWalkPostOrder(self):271    dir_path = os.path.join(self._base_dir, "test_dir")272    self._setupWalkDirectories(dir_path)273    # Now test the walk (in_order = False)274    all_dirs = []275    all_subdirs = []276    all_files = []277    for (w_dir, w_subdirs, w_files) in file_io.walk(dir_path, in_order=False):278      all_dirs.append(w_dir)279      all_subdirs.append(w_subdirs)280      all_files.append(w_files)281    self.assertItemsEqual(all_dirs, [282        os.path.join(dir_path, item)283        for item in284        ["subdir1_1", "subdir1_2/subdir2", "subdir1_2", "subdir1_3"]285    ] + [dir_path])286    self.assertEqual(dir_path, all_dirs[4])287    self.assertLess(288        all_dirs.index(os.path.join(dir_path, "subdir1_2/subdir2")),289        all_dirs.index(os.path.join(dir_path, "subdir1_2")))290    self.assertItemsEqual(all_subdirs[0:4], [[], [], ["subdir2"], []])291    self.assertItemsEqual(all_subdirs[4],292                          ["subdir1_1", "subdir1_2", "subdir1_3"])293    self.assertItemsEqual(all_files, [["file2.txt"], [], [], [], ["file1.txt"]])294    self.assertLess(295        all_files.index(["file2.txt"]), all_files.index(["file1.txt"]))296  def testWalkFailure(self):297    dir_path = os.path.join(self._base_dir, "test_dir")298    # Try walking a directory that wasn't created.299    all_dirs = []300    all_subdirs = []301    all_files = []302    for (w_dir, w_subdirs, w_files) in file_io.walk(dir_path, in_order=False):303      all_dirs.append(w_dir)304      all_subdirs.append(w_subdirs)305      all_files.append(w_files)306    self.assertItemsEqual(all_dirs, [])307    self.assertItemsEqual(all_subdirs, [])308    self.assertItemsEqual(all_files, [])309  def testStat(self):310    file_path = os.path.join(self._base_dir, "temp_file")311    file_io.FileIO(file_path, mode="w").write("testing")312    file_statistics = file_io.stat(file_path)313    os_statistics = os.stat(file_path)314    self.assertEqual(7, file_statistics.length)315    self.assertEqual(316        int(os_statistics.st_mtime), int(file_statistics.mtime_nsec / 1e9))317    self.assertFalse(file_statistics.is_directory)318  def testReadLine(self):319    file_path = os.path.join(self._base_dir, "temp_file")320    with file_io.FileIO(file_path, mode="r+") as f:321      f.write("testing1\ntesting2\ntesting3\n\ntesting5")322    self.assertEqual(36, f.size())323    self.assertEqual("testing1\n", f.readline())324    self.assertEqual("testing2\n", f.readline())325    self.assertEqual("testing3\n", f.readline())326    self.assertEqual("\n", f.readline())327    self.assertEqual("testing5", f.readline())328    self.assertEqual("", f.readline())329  def testRead(self):330    file_path = os.path.join(self._base_dir, "temp_file")331    with file_io.FileIO(file_path, mode="r+") as f:332      f.write("testing1\ntesting2\ntesting3\n\ntesting5")333    self.assertEqual(36, f.size())334    self.assertEqual("testing1\n", f.read(9))335    self.assertEqual("testing2\n", f.read(9))336    self.assertEqual("t", f.read(1))337    self.assertEqual("esting3\n\ntesting5", f.read())338  def testTell(self):339    file_path = os.path.join(self._base_dir, "temp_file")340    with file_io.FileIO(file_path, mode="r+") as f:341      f.write("testing1\ntesting2\ntesting3\n\ntesting5")342    self.assertEqual(0, f.tell())343    self.assertEqual("testing1\n", f.readline())344    self.assertEqual(9, f.tell())345    self.assertEqual("testing2\n", f.readline())346    self.assertEqual(18, f.tell())347    self.assertEqual("testing3\n", f.readline())348    self.assertEqual(27, f.tell())349    self.assertEqual("\n", f.readline())350    self.assertEqual(28, f.tell())351    self.assertEqual("testing5", f.readline())352    self.assertEqual(36, f.tell())353    self.assertEqual("", f.readline())354    self.assertEqual(36, f.tell())355  def testSeek(self):356    file_path = os.path.join(self._base_dir, "temp_file")357    with file_io.FileIO(file_path, mode="r+") as f:358      f.write("testing1\ntesting2\ntesting3\n\ntesting5")359    self.assertEqual("testing1\n", f.readline())360    self.assertEqual(9, f.tell())361    # Seek to 18362    f.seek(18)363    self.assertEqual(18, f.tell())364    self.assertEqual("testing3\n", f.readline())365    # Seek back to 9366    f.seek(9)367    self.assertEqual(9, f.tell())368    self.assertEqual("testing2\n", f.readline())369    f.seek(0)370    self.assertEqual(0, f.tell())371    self.assertEqual("testing1\n", f.readline())372    with self.assertRaises(errors.InvalidArgumentError):373      f.seek(-1)374    with self.assertRaises(TypeError):375      f.seek()376    # TODO(jhseu): Delete after position deprecation.377    with self.assertRaises(TypeError):378      f.seek(offset=0, position=0)379    f.seek(position=9)380    self.assertEqual(9, f.tell())381    self.assertEqual("testing2\n", f.readline())382  def testSeekFromWhat(self):383    file_path = os.path.join(self._base_dir, "temp_file")384    with file_io.FileIO(file_path, mode="r+") as f:385      f.write("testing1\ntesting2\ntesting3\n\ntesting5")386    self.assertEqual("testing1\n", f.readline())387    self.assertEqual(9, f.tell())388    # Seek to 18389    f.seek(9, 1)390    self.assertEqual(18, f.tell())391    self.assertEqual("testing3\n", f.readline())392    # Seek back to 9393    f.seek(9, 0)394    self.assertEqual(9, f.tell())395    self.assertEqual("testing2\n", f.readline())396    f.seek(-f.size(), 2)397    self.assertEqual(0, f.tell())398    self.assertEqual("testing1\n", f.readline())399    with self.assertRaises(errors.InvalidArgumentError):400      f.seek(0, 3)401  def testReadingIterator(self):402    file_path = os.path.join(self._base_dir, "temp_file")403    data = ["testing1\n", "testing2\n", "testing3\n", "\n", "testing5"]404    with file_io.FileIO(file_path, mode="r+") as f:405      f.write("".join(data))406    actual_data = []407    for line in f:408      actual_data.append(line)409    self.assertSequenceEqual(actual_data, data)410  def testReadlines(self):411    file_path = os.path.join(self._base_dir, "temp_file")412    data = ["testing1\n", "testing2\n", "testing3\n", "\n", "testing5"]413    f = file_io.FileIO(file_path, mode="r+")414    f.write("".join(data))415    f.flush()416    lines = f.readlines()417    self.assertSequenceEqual(lines, data)418  def testUTF8StringPath(self):419    file_path = os.path.join(self._base_dir, "UTF8æµè¯_file")420    file_io.write_string_to_file(file_path, "testing")421    with file_io.FileIO(file_path, mode="rb") as f:422      self.assertEqual(b"testing", f.read())423  def testEof(self):424    """Test that reading past EOF does not raise an exception."""425    file_path = os.path.join(self._base_dir, "temp_file")426    f = file_io.FileIO(file_path, mode="r+")427    content = "testing"428    f.write(content)429    f.flush()430    self.assertEqual(content, f.read(len(content) + 1))431  def testUTF8StringPathExists(self):432    file_path = os.path.join(self._base_dir, "UTF8æµè¯_file_exist")433    file_io.write_string_to_file(file_path, "testing")434    v = file_io.file_exists(file_path)435    self.assertEqual(v, True)436  def testFilecmp(self):437    file1 = os.path.join(self._base_dir, "file1")438    file_io.write_string_to_file(file1, "This is a sentence\n" * 100)439    file2 = os.path.join(self._base_dir, "file2")440    file_io.write_string_to_file(file2, "This is another sentence\n" * 100)441    file3 = os.path.join(self._base_dir, "file3")442    file_io.write_string_to_file(file3, u"This is another sentence\n" * 100)443    self.assertFalse(file_io.filecmp(file1, file2))444    self.assertTrue(file_io.filecmp(file2, file3))445  def testFilecmpSameSize(self):446    file1 = os.path.join(self._base_dir, "file1")447    file_io.write_string_to_file(file1, "This is a sentence\n" * 100)448    file2 = os.path.join(self._base_dir, "file2")449    file_io.write_string_to_file(file2, "This is b sentence\n" * 100)450    file3 = os.path.join(self._base_dir, "file3")451    file_io.write_string_to_file(file3, u"This is b sentence\n" * 100)452    self.assertFalse(file_io.filecmp(file1, file2))453    self.assertTrue(file_io.filecmp(file2, file3))454  def testFilecmpBinary(self):455    file1 = os.path.join(self._base_dir, "file1")456    file_io.FileIO(file1, "wb").write("testing\n\na")457    file2 = os.path.join(self._base_dir, "file2")458    file_io.FileIO(file2, "wb").write("testing\n\nb")459    file3 = os.path.join(self._base_dir, "file3")460    file_io.FileIO(file3, "wb").write("testing\n\nb")461    file4 = os.path.join(self._base_dir, "file4")462    file_io.FileIO(file4, "wb").write("testing\n\ntesting")463    self.assertFalse(file_io.filecmp(file1, file2))464    self.assertFalse(file_io.filecmp(file1, file4))465    self.assertTrue(file_io.filecmp(file2, file3))466  def testFileCrc32(self):467    file1 = os.path.join(self._base_dir, "file1")468    file_io.write_string_to_file(file1, "This is a sentence\n" * 100)469    crc1 = file_io.file_crc32(file1)470    file2 = os.path.join(self._base_dir, "file2")471    file_io.write_string_to_file(file2, "This is another sentence\n" * 100)472    crc2 = file_io.file_crc32(file2)473    file3 = os.path.join(self._base_dir, "file3")474    file_io.write_string_to_file(file3, "This is another sentence\n" * 100)475    crc3 = file_io.file_crc32(file3)476    self.assertTrue(crc1 != crc2)477    self.assertEqual(crc2, crc3)478  def testFileCrc32WithBytes(self):479    file1 = os.path.join(self._base_dir, "file1")480    file_io.write_string_to_file(file1, "This is a sentence\n" * 100)481    crc1 = file_io.file_crc32(file1, block_size=24)482    file2 = os.path.join(self._base_dir, "file2")483    file_io.write_string_to_file(file2, "This is another sentence\n" * 100)484    crc2 = file_io.file_crc32(file2, block_size=24)485    file3 = os.path.join(self._base_dir, "file3")486    file_io.write_string_to_file(file3, "This is another sentence\n" * 100)487    crc3 = file_io.file_crc32(file3, block_size=-1)488    self.assertTrue(crc1 != crc2)489    self.assertEqual(crc2, crc3)490  def testFileCrc32Binary(self):491    file1 = os.path.join(self._base_dir, "file1")492    file_io.FileIO(file1, "wb").write("testing\n\n")493    crc1 = file_io.file_crc32(file1)494    file2 = os.path.join(self._base_dir, "file2")495    file_io.FileIO(file2, "wb").write("testing\n\n\n")496    crc2 = file_io.file_crc32(file2)497    file3 = os.path.join(self._base_dir, "file3")498    file_io.FileIO(file3, "wb").write("testing\n\n\n")499    crc3 = file_io.file_crc32(file3)500    self.assertTrue(crc1 != crc2)501    self.assertEqual(crc2, crc3)502  def testMatchingFilesPermission(self):503    # Create top level directory test_dir.504    dir_path = os.path.join(self._base_dir, "test_dir")505    file_io.create_dir(dir_path)506    # Create second level directories `noread` and `any`.507    noread_path = os.path.join(dir_path, "noread")508    file_io.create_dir(noread_path)509    any_path = os.path.join(dir_path, "any")510    file_io.create_dir(any_path)511    files = ["file1.txt", "file2.txt", "file3.txt"]512    for name in files:513      file_path = os.path.join(any_path, name)514      file_io.FileIO(file_path, mode="w").write("testing")515    file_path = os.path.join(noread_path, "file4.txt")516    file_io.FileIO(file_path, mode="w").write("testing")517    # Change noread to noread access.518    os.chmod(noread_path, 0)519    expected_match = [os.path.join(any_path, name) for name in files]520    self.assertItemsEqual(521        file_io.get_matching_files(os.path.join(dir_path, "*", "file*.txt")),522        expected_match)523    # Change noread back so that it could be cleaned during tearDown.524    os.chmod(noread_path, 0o777)525  def testFileSeekableWithZip(self):526    # Note: Test case for GitHub issue 27276, issue only exposed in python 3.7+.527    filename = os.path.join(self._base_dir, "a.npz")528    np.savez_compressed(filename, {"a": 1, "b": 2})529    with gfile.GFile(filename, "rb") as f:530      info = np.load(f, allow_pickle=True)...PFB.js
Source:PFB.js  
1// This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild23(function (root, factory) {4  if (typeof define === 'function' && define.amd) {5    define(['kaitai-struct/KaitaiStream'], factory);6  } else if (typeof module === 'object' && module.exports) {7    module.exports = factory(require('kaitai-struct/KaitaiStream'));8  } else {9    root.Pfb = factory(root.KaitaiStream);10  }11}(typeof self !== 'undefined' ? self : this, function (KaitaiStream) {12var Pfb = (function() {13  function Pfb(_io, _parent, _root) {14    this._io = _io;15    this._parent = _parent;16    this._root = _root || this;1718    this._read();19  }20  Pfb.prototype._read = function() {21    this.magic = this._io.readU4le();22    this.unknown1 = this._io.readU4le();23    this.unknown2 = this._io.readU4le();24    this.unknown3 = this._io.readU4le();25    this.nodes = [];26    for (var i = 0; i < 8; i++) {27      this.nodes.push(new Node(this._io, this, this._root));28    }29  }3031  var CoordsList = Pfb.CoordsList = (function() {32    function CoordsList(_io, _parent, _root) {33      this._io = _io;34      this._parent = _parent;35      this._root = _root || this;3637      this._read();38    }39    CoordsList.prototype._read = function() {40      this.size = this._io.readU4le();41      this.unk1 = this._io.readU4le();42      this.unk2 = this._io.readU4le();43      this.list = [];44      for (var i = 0; i < this.size; i++) {45        this.list.push(new CoordinatePair(this._io, this, this._root));46      }47    }4849    return CoordsList;50  })();5152  var NormalsList = Pfb.NormalsList = (function() {53    function NormalsList(_io, _parent, _root) {54      this._io = _io;55      this._parent = _parent;56      this._root = _root || this;5758      this._read();59    }60    NormalsList.prototype._read = function() {61      this.size = this._io.readU4le();62      this.unk1 = this._io.readU4le();63      this.unk2 = this._io.readU4le();64      this.elements = [];65      for (var i = 0; i < this.size; i++) {66        this.elements.push(new Normal(this._io, this, this._root));67      }68    }6970    return NormalsList;71  })();7273  var Vertex = Pfb.Vertex = (function() {74    function Vertex(_io, _parent, _root) {75      this._io = _io;76      this._parent = _parent;77      this._root = _root || this;7879      this._read();80    }81    Vertex.prototype._read = function() {82      this.x = this._io.readF4le();83      this.y = this._io.readF4le();84      this.z = this._io.readF4le();85    }8687    return Vertex;88  })();8990  var LengthsList = Pfb.LengthsList = (function() {91    function LengthsList(_io, _parent, _root) {92      this._io = _io;93      this._parent = _parent;94      this._root = _root || this;9596      this._read();97    }98    LengthsList.prototype._read = function() {99      this.size = this._io.readU4le();100      this.unk1 = this._io.readU4le();101      this.unk2 = this._io.readU4le();102      this.elements = [];103      for (var i = 0; i < this.size; i++) {104        this.elements.push(this._io.readU4le());105      }106    }107108    return LengthsList;109  })();110111  var Geosets = Pfb.Geosets = (function() {112    function Geosets(_io, _parent, _root) {113      this._io = _io;114      this._parent = _parent;115      this._root = _root || this;116117      this._read();118    }119    Geosets.prototype._read = function() {120      this.count = this._io.readU4le();121      this.size = this._io.readU4le();122      this.geosets = [];123      for (var i = 0; i < this.count; i++) {124        this.geosets.push(new Geoset(this._io, this, this._root));125      }126    }127128    return Geosets;129  })();130131  var Materials = Pfb.Materials = (function() {132    function Materials(_io, _parent, _root) {133      this._io = _io;134      this._parent = _parent;135      this._root = _root || this;136137      this._read();138    }139    Materials.prototype._read = function() {140      this.count = this._io.readU4le();141      this.size = this._io.readU4le();142      this.materials = this._io.readBytes((this.count * 4));143    }144145    return Materials;146  })();147148  var Normal = Pfb.Normal = (function() {149    function Normal(_io, _parent, _root) {150      this._io = _io;151      this._parent = _parent;152      this._root = _root || this;153154      this._read();155    }156    Normal.prototype._read = function() {157      this.nx = this._io.readF4le();158      this.ny = this._io.readF4le();159      this.nz = this._io.readF4le();160    }161162    return Normal;163  })();164165  var Color = Pfb.Color = (function() {166    function Color(_io, _parent, _root) {167      this._io = _io;168      this._parent = _parent;169      this._root = _root || this;170171      this._read();172    }173    Color.prototype._read = function() {174      this.r = this._io.readF4le();175      this.g = this._io.readF4le();176      this.b = this._io.readF4le();177      this.a = this._io.readF4le();178    }179180    return Color;181  })();182183  var VertexLists = Pfb.VertexLists = (function() {184    function VertexLists(_io, _parent, _root) {185      this._io = _io;186      this._parent = _parent;187      this._root = _root || this;188189      this._read();190    }191    VertexLists.prototype._read = function() {192      this.count = this._io.readU4le();193      this.totalSize = this._io.readU4le();194      this.lists = [];195      for (var i = 0; i < this.count; i++) {196        this.lists.push(new VertexList(this._io, this, this._root));197      }198    }199200    return VertexLists;201  })();202203  var TextcoordLists = Pfb.TextcoordLists = (function() {204    function TextcoordLists(_io, _parent, _root) {205      this._io = _io;206      this._parent = _parent;207      this._root = _root || this;208209      this._read();210    }211    TextcoordLists.prototype._read = function() {212      this.count = this._io.readU4le();213      this.totalSize = this._io.readU4le();214      this.lists = [];215      for (var i = 0; i < this.count; i++) {216        this.lists.push(new CoordsList(this._io, this, this._root));217      }218    }219220    return TextcoordLists;221  })();222223  var CoordinatePair = Pfb.CoordinatePair = (function() {224    function CoordinatePair(_io, _parent, _root) {225      this._io = _io;226      this._parent = _parent;227      this._root = _root || this;228229      this._read();230    }231    CoordinatePair.prototype._read = function() {232      this.s = this._io.readF4le();233      this.t = this._io.readF4le();234    }235236    return CoordinatePair;237  })();238239  var VertexList = Pfb.VertexList = (function() {240    function VertexList(_io, _parent, _root) {241      this._io = _io;242      this._parent = _parent;243      this._root = _root || this;244245      this._read();246    }247    VertexList.prototype._read = function() {248      this.size = this._io.readU4le();249      this.unk1 = this._io.readU4le();250      this.unk2 = this._io.readU4le();251      this.elements = [];252      for (var i = 0; i < this.size; i++) {253        this.elements.push(new Vertex(this._io, this, this._root));254      }255    }256257    return VertexList;258  })();259260  var ColorsLists = Pfb.ColorsLists = (function() {261    function ColorsLists(_io, _parent, _root) {262      this._io = _io;263      this._parent = _parent;264      this._root = _root || this;265266      this._read();267    }268    ColorsLists.prototype._read = function() {269      this.count = this._io.readU4le();270      this.totalSize = this._io.readU4le();271      this.lists = [];272      for (var i = 0; i < this.count; i++) {273        this.lists.push(new ColorsList(this._io, this, this._root));274      }275    }276277    return ColorsLists;278  })();279280  var ColorsList = Pfb.ColorsList = (function() {281    function ColorsList(_io, _parent, _root) {282      this._io = _io;283      this._parent = _parent;284      this._root = _root || this;285286      this._read();287    }288    ColorsList.prototype._read = function() {289      this.size = this._io.readU4le();290      this.unk1 = this._io.readU4le();291      this.unk2 = this._io.readU4le();292      this.elements = [];293      for (var i = 0; i < this.size; i++) {294        this.elements.push(new Color(this._io, this, this._root));295      }296    }297298    return ColorsList;299  })();300301  var Geoset = Pfb.Geoset = (function() {302    function Geoset(_io, _parent, _root) {303      this._io = _io;304      this._parent = _parent;305      this._root = _root || this;306307      this._read();308    }309    Geoset.prototype._read = function() {310      this.stripType = this._io.readU4le();311      this.numStrip = this._io.readU4le();312      this.lengthListId = this._io.readS4le();313      this.unk1 = this._io.readU4le();314      this.unk2 = this._io.readU4le();315      this.unk3 = this._io.readU4le();316      this.unk4 = this._io.readU4le();317      this.unk5 = this._io.readU4le();318      this.geostateId = this._io.readU4le();319      this.data6b = this._io.readU4le();320      this.data7 = this._io.readU4le();321      this.data8 = this._io.readU4le();322      this.mask = this._io.readU4le();323      this.data9 = this._io.readU4le();324      this.num = this._io.readU4le();325      this.vec0 = this._io.readF4le();326      this.vec1 = this._io.readF4le();327      this.vec2 = this._io.readF4le();328      this.vec3 = this._io.readF4le();329      this.vec4 = this._io.readF4le();330      this.vec5 = this._io.readF4le();331    }332333    return Geoset;334  })();335336  var Node = Pfb.Node = (function() {337    function Node(_io, _parent, _root) {338      this._io = _io;339      this._parent = _parent;340      this._root = _root || this;341342      this._read();343    }344    Node.prototype._read = function() {345      this.type = this._io.readU4le();346      switch (this.type) {347      case 10:348        this.contents = new Geosets(this._io, this, this._root);349        break;350      case 17:351        this.contents = new TUnknown(this._io, this, this._root);352        break;353      case 0:354        this.contents = new TUnknown(this._io, this, this._root);355        break;356      case 4:357        this.contents = new LenghtsLists(this._io, this, this._root);358        break;359      case 6:360        this.contents = new ColorsLists(this._io, this, this._root);361        break;362      case 7:363        this.contents = new NormalsLists(this._io, this, this._root);364        break;365      case 1:366        this.contents = new Textures(this._io, this, this._root);367        break;368      case 27:369        this.contents = new TUnknown(this._io, this, this._root);370        break;371      case 12:372        this.contents = new TUnknown(this._io, this, this._root);373        break;374      case 3:375        this.contents = new TUnknown(this._io, this, this._root);376        break;377      case 5:378        this.contents = new VertexLists(this._io, this, this._root);379        break;380      case 8:381        this.contents = new TextcoordLists(this._io, this, this._root);382        break;383      case 9:384        this.contents = new TUnknown(this._io, this, this._root);385        break;386      case 18:387        this.contents = new TUnknown(this._io, this, this._root);388        break;389      case 2:390        this.contents = new TUnknown(this._io, this, this._root);391        break;392      }393    }394395    return Node;396  })();397398  var Textures = Pfb.Textures = (function() {399    function Textures(_io, _parent, _root) {400      this._io = _io;401      this._parent = _parent;402      this._root = _root || this;403404      this._read();405    }406    Textures.prototype._read = function() {407      this.count = this._io.readU4le();408      this.totalSize = this._io.readU4le();409      this.textures = [];410      for (var i = 0; i < this.count; i++) {411        this.textures.push(new Texture(this._io, this, this._root));412      }413    }414415    return Textures;416  })();417418  var Geostates = Pfb.Geostates = (function() {419    function Geostates(_io, _parent, _root) {420      this._io = _io;421      this._parent = _parent;422      this._root = _root || this;423424      this._read();425    }426    Geostates.prototype._read = function() {427      this.count = this._io.readU4le();428      this.totalSize = this._io.readU4le();429      this.geostates = this._io.readBytes(this.totalSize);430    }431432    return Geostates;433  })();434435  var Texture = Pfb.Texture = (function() {436    function Texture(_io, _parent, _root) {437      this._io = _io;438      this._parent = _parent;439      this._root = _root || this;440441      this._read();442    }443    Texture.prototype._read = function() {444      this.filename = new PfbString(this._io, this, this._root);445      this.contents = this._io.readBytes(((Math.floor(this._parent.totalSize / this._parent.count) - this.filename.len) - 4));446    }447448    return Texture;449  })();450451  var LenghtsLists = Pfb.LenghtsLists = (function() {452    function LenghtsLists(_io, _parent, _root) {453      this._io = _io;454      this._parent = _parent;455      this._root = _root || this;456457      this._read();458    }459    LenghtsLists.prototype._read = function() {460      this.count = this._io.readU4le();461      this.totalSize = this._io.readU4le();462      this.lists = [];463      for (var i = 0; i < this.count; i++) {464        this.lists.push(new LengthsList(this._io, this, this._root));465      }466    }467468    return LenghtsLists;469  })();470471  var PfbString = Pfb.PfbString = (function() {472    function PfbString(_io, _parent, _root) {473      this._io = _io;474      this._parent = _parent;475      this._root = _root || this;476477      this._read();478    }479    PfbString.prototype._read = function() {480      this.len = this._io.readU4le();481      this.contents = KaitaiStream.bytesToStr(this._io.readBytes(this.len), "ASCII");482    }483484    return PfbString;485  })();486487  var NormalsLists = Pfb.NormalsLists = (function() {488    function NormalsLists(_io, _parent, _root) {489      this._io = _io;490      this._parent = _parent;491      this._root = _root || this;492493      this._read();494    }495    NormalsLists.prototype._read = function() {496      this.count = this._io.readU4le();497      this.totalSize = this._io.readU4le();498      this.lists = [];499      for (var i = 0; i < this.count; i++) {500        this.lists.push(new NormalsList(this._io, this, this._root));501      }502    }503504    return NormalsLists;505  })();506507  var TUnknown = Pfb.TUnknown = (function() {508    function TUnknown(_io, _parent, _root) {509      this._io = _io;510      this._parent = _parent;511      this._root = _root || this;512513      this._read();514    }515    TUnknown.prototype._read = function() {516      this.count = this._io.readU4le();517      this.totalSize = this._io.readU4le();518      this.body = this._io.readBytes(this.totalSize);519    }520521    return TUnknown;522  })();523524  return Pfb;525})();526return Pfb;
...asupan.js
Source:asupan.js  
1[2{"result":"http://sansekai.my.id/ptl_repost/120416207_674661289840975_7238538460676645249_n.mp4"},3{"result":"http://sansekai.my.id/ptl_repost/120443017_225738842307010_1507614018538871668_n.mp4"},4{"result":"http://sansekai.my.id/ptl_repost/120506710_129730895516659_9090102890235113922_n.mp4"},5{"result":"http://sansekai.my.id/ptl_repost/120518115_3382156938497131_2702539154432231938_n.mp4"},6{"result":"http://sansekai.my.id/ptl_repost/120533450_988960268238482_4908300175960396265_n.mp4"},7{"result":"http://sansekai.my.id/ptl_repost/120554993_913582535835353_7937155730001219945_n.mp4"},8{"result":"http://sansekai.my.id/ptl_repost/120565745_258483202099028_1831534734126408497_n.mp4"},9{"result":"http://sansekai.my.id/ptl_repost/120570166_2716242608644571_5562452335611050430_n.mp4"},10{"result":"http://sansekai.my.id/ptl_repost/120571358_3743879342322868_4731152347084614368_n.mp4"},11{"result":"http://sansekai.my.id/ptl_repost/120571938_198275171805822_8506241533969509004_n.mp4"},12{"result":"http://sansekai.my.id/ptl_repost/120573034_128654721967389_1837144340570017830_n.mp4"},13{"result":"http://sansekai.my.id/ptl_repost/120574217_2707319792866165_3682328392840010261_n.mp4"},14{"result":"http://sansekai.my.id/ptl_repost/120575986_151816433263092_6600262966520398271_n.mp4"},15{"result":"http://sansekai.my.id/ptl_repost/120582400_339926344091433_2581248581156693603_n.mp4"},16{"result":"http://sansekai.my.id/ptl_repost/120583739_1060190921079212_3898520254664507328_n.mp4"},17{"result":"http://sansekai.my.id/ptl_repost/120587415_638776546998307_3091093882267818607_n.mp4"},18{"result":"http://sansekai.my.id/ptl_repost/120589771_752670855329266_5064573607465519463_n.mp4"},19{"result":"http://sansekai.my.id/ptl_repost/120613860_3393110177444352_4287165838359264124_n.mp4"},20{"result":"http://sansekai.my.id/ptl_repost/120614859_768632723701773_5662521620734316774_n.mp4"},21{"result":"http://sansekai.my.id/ptl_repost/120615019_149392973357031_6254963333779779708_n.mp4"},22{"result":"http://sansekai.my.id/ptl_repost/120664457_338629710563119_6615226849280369453_n.mp4"},23{"result":"http://sansekai.my.id/ptl_repost/120670762_191033325874671_8168246094200167609_n.mp4"},24{"result":"http://sansekai.my.id/ptl_repost/120678112_971693299972883_1648826221504742220_n.mp4"},25{"result":"http://sansekai.my.id/ptl_repost/120682363_1181866688854694_4233466354892721595_n.mp4"},26{"result":"http://sansekai.my.id/ptl_repost/120698858_1302470566751609_3736999773452225729_n.mp4"},27{"result":"http://sansekai.my.id/ptl_repost/120707049_337981777304231_3152650741169851669_n.mp4"},28{"result":"http://sansekai.my.id/ptl_repost/120714412_680680702806959_2149499366562729814_n.mp4"},29{"result":"http://sansekai.my.id/ptl_repost/120678112_971693299972883_1648826221504742220_n.mp4"},30{"result":"http://sansekai.my.id/ptl_repost/120682363_1181866688854694_4233466354892721595_n.mp4"},31{"result":"http://sansekai.my.id/ptl_repost/120698858_1302470566751609_3736999773452225729_n.mp4"},32{"result":"://e.top4top.io/m_1930wespy0.mp4"},33{"result":"://e.top4top.io/m_19303zfi20.mp4"},34{"result":"://j.top4top.io/m_1930t00kx0.mp4"},35{"result":"://e.top4top.io/m_1930kx7hi0.mp4"},36{"result":"://c.top4top.io/m_19307g6kd0.mp4"},37{"result":"://f.top4top.io/m_19306yk4c0.mp4"},38{"result":"://i.top4top.io/m_1930y1u780.mp4"},39{"result":"://j.top4top.io/m_1930ilsyy0.mp4"},40{"result":"://i.top4top.io/m_19301948b0.mp4"},41{"result":"://d.top4top.io/m_1930zg8460.mp4"},42{"result":"://i.top4top.io/m_19301yozl0.mp4"},43{"result":"://g.top4top.io/m_1930qjr2q0.mp4"},44{"result":"://l.top4top.io/m_1930x1wp50.mp4"},45{"result":"://a.top4top.io/m_1930zr1041.mp4"},46{"result":"://b.top4top.io/m_1930s29hq2.mp4"},47{"result":"://a.top4top.io/m_1930kbo0y0.mp4"},48{"result":"://j.top4top.io/m_1930xek9z0.mp4"},49{"result":"://i.top4top.io/m_1930s7gb80.mp4"},50{"result":"://c.top4top.io/m_1930w0dbu0.mp4"},51{"result":"://d.top4top.io/m_1930xu4kd1.mp4"},52{"result":"://a.top4top.io/m_1930zw2nb0.mp4"},53{"result":"://b.top4top.io/m_1930eybjj1.mp4"},54{"result":"://g.top4top.io/m_1930fmx330.mp4"},55{"result":"://l.top4top.io/m_1930gnlam0.mp4"},56{"result":"://g.top4top.io/m_1930twwu50.mp4"},57{"result":"://l.top4top.io/m_1930qkeh70.mp4"},58{"result":"://l.top4top.io/m_1930wefm20.mp4"},59{"result":"://a.top4top.io/m_1930idzd51.mp4"},60{"result":"://d.top4top.io/m_2062ec3r60.mp4"},61{"result":"https://e.top4top.io/m_1930ns2zo0.mp4"},62{"result":"https://k.top4top.io/m_1930j9i810.mp4"},63{"result":"https://f.top4top.io/m_1930wtj580.mp4"},64{"result":"https://d.top4top.io/m_1930a2isv0.mp4"},65{"result":"https://e.top4top.io/m_1930wbgc41.mp4"},66{"result":"https://f.top4top.io/m_1930urbj02.mp4"},67{"result":"https://b.top4top.io/m_1930ceiqv0.mp4"},68{"result":"https://i.top4top.io/m_1931a0z6o0.mp4"},69{"result":"https://a.top4top.io/m_193190b500.mp4"},70{"result":"https://b.top4top.io/m_1931dcixz1.mp4"},71{"result":"https://g.top4top.io/m_19317gpjp0.mp4"},72{"result":"https://i.top4top.io/m_1931cc22w1.mp4"},73{"result":"https://j.top4top.io/m_1931xn6412.mp4"},74{"result":"https://g.top4top.io/m_1931silxz0.mp4"},75{"result":"https://h.top4top.io/m_1931as4mg1.mp4"},76{"result":"https://i.top4top.io/m_1931p9j5v0.mp4"},77{"result":"https://e.top4top.io/m_1931mgeuy0.mp4"},78{"result":"https://f.top4top.io/m_1931lw9381.mp4"},79{"result":"https://g.top4top.io/m_1931vm0dk2.mp4"},80{"result":"https://h.top4top.io/m_1931fiv8x3.mp4"},81{"result":"https://b.top4top.io/m_1931jm3dt0.mp4"},82{"result":"https://e.top4top.io/m_1931i7yag1.mp4"},83{"result":"https://f.top4top.io/m_1931dr5ya2.mp4"},84{"result":"https://g.top4top.io/m_193172kpg3.mp4"},85{"result":"https://h.top4top.io/m_1931j3b224.mp4"},86{"result":"https://j.top4top.io/m_19317ykt25.mp4"},87{"result":"https://k.top4top.io/m_1931o0vh16.mp4"},88{"result":"https://l.top4top.io/m_1931ssfbn7.mp4"},89{"result":"https://a.top4top.io/m_19318t7458.mp4"},90{"result":"https://b.top4top.io/m_1931vhu759.mp4"},91{"result":"https://b.top4top.io/m_1930thxw90.mp4"},92{"result":"https://d.top4top.io/m_1930pezhp0.mp4"},93{"result":"https://c.top4top.io/m_1930cjgbx0.mp4"},94{"result":"https://b.top4top.io/m_1930v6vhg0.mp4"},95{"result":"https://f.top4top.io/m_1930uh7ud0.mp4"},96{"result":"https://a.top4top.io/m_1930c9cpb0.mp4"},97{"result":"https://k.top4top.io/m_19308amkf0.mp4"},98{"result":"https://d.top4top.io/m_1930wjaq60.mp4"},99{"result":"https://i.top4top.io/m_1930n2um40.mp4"},100{"result":"https://i.top4top.io/m_1930e14pi0.mp4"},101{"result":"https://i.top4top.io/m_1930w6lwf0.mp4"},102{"result":"https://e.top4top.io/m_19307autl0.mp4"},103{"result":"https://d.top4top.io/m_1930i6tfc0.mp4"},104{"result":"https://c.top4top.io/m_1930qmr7u0.mp4"},105{"result":"https://d.top4top.io/m_1930itbte1.mp4"},106{"result":"https://i.top4top.io/m_1930ze4oq0.mp4"},107{"result":"https://j.top4top.io/m_1930kkqyh1.mp4"},108{"result":"https://f.top4top.io/m_1930zevlz0.mp4"},109{"result":"https://g.top4top.io/m_1930q0apu1.mp4"},110{"result":"https://h.top4top.io/m_1930trfsv2.mp4"},111{"result":"https://l.top4top.io/m_1931ufrul0.mp4"},112{"result":"https://a.top4top.io/m_1931jbdpk1.mp4"},113{"result":"https://c.top4top.io/m_1931aj9nm2.mp4"},114{"result":"https://d.top4top.io/m_1931cnsal3.mp4"},115{"result":"https://e.top4top.io/m_1931d4kc74.mp4"},116{"result":"https://f.top4top.io/m_1931bih8q5.mp4"},117{"result":"https://g.top4top.io/m_1931xx7aa6.mp4"},118{"result":"https://h.top4top.io/m_1931g3zsq7.mp4"},119{"result":"https://a.top4top.io/m_1931m74wd0.mp4"},120{"result":"https://b.top4top.io/m_1931p8tfm1.mp4"},121{"result":"https://e.top4top.io/m_1931aj8iv0.mp4"},122{"result":"https://f.top4top.io/m_1931szguy1.mp4"},123{"result":"https://g.top4top.io/m_1931l73ry2.mp4"},124{"result":"https://h.top4top.io/m_1931yhznj3.mp4"},125{"result":"https://i.top4top.io/m_1931kmtp34.mp4"},126{"result":"https://j.top4top.io/m_1931snhdg5.mp4"},127{"result":"https://k.top4top.io/m_1931ay1jz6.mp4"},128{"result":"https://l.top4top.io/m_1931x70mk7.mp4"},129{"result":"https://a.top4top.io/m_19319mvvf8.mp4"},130{"result":"https://b.top4top.io/m_1931icmzd9.mp4"},131{"result":"https://h.top4top.io/m_19316oo0s0.mp4"},132{"result":"https://i.top4top.io/m_1931cvvpt1.mp4"},133{"result":"https://b.top4top.io/m_1931yxodg0.mp4"},134{"result":"https://k.top4top.io/m_193161p380.mp4"},135{"result":"https://l.top4top.io/m_1931i4g3p1.mp4"},136{"result":"https://a.top4top.io/m_1931tjlio2.mp4"},137{"result":"https://g.top4top.io/m_1931z2mc40.mp4"},138{"result":"https://h.top4top.io/m_1931auyof1.mp4"},139{"result":"https://i.top4top.io/m_19315hrle2.mp4"},140{"result":"https://j.top4top.io/m_1931xul5a3.mp4"},141{"result":"https://l.top4top.io/m_1931o92nr0.mp4"},142{"result":"https://a.top4top.io/m_1931j1rh21.mp4"},143{"result":"https://b.top4top.io/m_1931iaqpg2.mp4"},144{"result":"https://c.top4top.io/m_1931s5zlj3.mp4"},145{"result":"https://d.top4top.io/m_1931x0g5a4.mp4"},146{"result":"https://i.top4top.io/m_1931oj76n0.mp4"},147{"result":"https://j.top4top.io/m_19319gl3d1.mp4"},148{"result":"https://k.top4top.io/m_1931u52cq2.mp4"},149{"result":"https://l.top4top.io/m_1931mvgj73.mp4"},150{"result":"https://a.top4top.io/m_1931u07oz4.mp4"},151{"result":"https://j.top4top.io/m_1931h1fo60.mp4"},152{"result":"https://k.top4top.io/m_1931mro3u1.mp4"},153{"result":"https://l.top4top.io/m_1931kx0ac2.mp4"},154{"result":"https://a.top4top.io/m_1931g9ezq3.mp4"},155{"result":"https://b.top4top.io/m_1931plin14.mp4"},156{"result":"https://c.top4top.io/m_1931aaxri5.mp4"},157{"result":"https://d.top4top.io/m_1931ijzzn6.mp4"},158{"result":"https://e.top4top.io/m_1931ugycd7.mp4"},159{"result":"https://f.top4top.io/m_1931l14nk8.mp4"},160{"result":"https://g.top4top.io/m_1931crgqt9.mp4"},161{"result":"https://g.top4top.io/m_2080isjz00.mp4"},162{"result":"https://h.top4top.io/m_2080sw2vr0.mp4"},163{"result":"https://e.top4top.io/m_2080g02070.mp4"},164{"result":"https://j.top4top.io/m_2080olloo6.mp4"},165{"result":"https://i.top4top.io/m_2080ulaoy5.mp4"},166{"result":"https://h.top4top.io/m_2080px33c4.mp4"},167{"result":"https://g.top4top.io/m_2080kpb6l3.mp4"},168{"result":"https://f.top4top.io/m_20803iuor2.mp4"},169{"result":"https://e.top4top.io/m_2080qcpsz1.mp4"},170{"result":"https://d.top4top.io/m_2080p6j6e0.mp4"},171{"result":"https://b.top4top.io/m_20808q0mz2.mp4"},172{"result":"https://a.top4top.io/m_2080mpkv91.mp4"},173{"result":"https://l.top4top.io/m_2080wz0gu0.mp4"},174{"result":"https://b.top4top.io/m_20816emsu0.mp4"},175{"result":"https://a.top4top.io/m_208198wob6.mp4"},176{"result":"https://l.top4top.io/m_208112xxw5.mp4"},177{"result":"https://k.top4top.io/m_2081iapdc4.mp4"},178{"result":"https://i.top4top.io/m_2081oix7n3.mp4"},179{"result":"https://h.top4top.io/m_2081zhpp72.mp4"},180{"result":"https://g.top4top.io/m_2081tbnan1.mp4"},181{"result":"https://f.top4top.io/m_20811tyi00.mp4"},182{"result":"https://a.top4top.io/m_20812zy9o0.mp4"}...Vst.js
Source:Vst.js  
1// This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild2(function (root, factory) {3  if (typeof define === 'function' && define.amd) {4    define(['kaitai-struct/KaitaiStream'], factory);5  } else if (typeof module === 'object' && module.exports) {6    module.exports = factory(require('kaitai-struct/KaitaiStream'));7  } else {8    root.Vst = factory(root.KaitaiStream);9  }10}(this, function (KaitaiStream) {11var Vst = (function() {12  function Vst(_io, _parent, _root) {13    this._io = _io;14    this._parent = _parent;15    this._root = _root || this;16    this._read();17  }18  Vst.prototype._read = function() {19    this.vistaHeader = new VstHeader(this._io, this, this._root);20    this.boundingBox = new BoundingBox(this._io, this, this._root);21    this.textureRef = this._io.readBytes(2048);22    this.coordinateSystem = this._io.readBytes(4096);23  }24  var VstHeader = Vst.VstHeader = (function() {25    function VstHeader(_io, _parent, _root) {26      this._io = _io;27      this._parent = _parent;28      this._root = _root || this;29      this._read();30    }31    VstHeader.prototype._read = function() {32      this.magic = this._io.readBytes(3);33      if (!((KaitaiStream.byteArrayCompare(this.magic, [86, 83, 84]) == 0))) {34        throw new KaitaiStream.ValidationNotEqualError([86, 83, 84], this.magic, this._io, "/types/vst_header/seq/0");35      }36      this.end = KaitaiStream.bytesToStr(this._io.readBytes(1), "ASCII");37      this.endianness = this._io.readU4le();38      this.major = this._io.readU4le();39      this.minor = this._io.readU4le();40      this.implId = this._io.readU4le();41      this.res = this._io.readU8le();42      this.texturesCount = this._io.readU4le();43      this.vertexCount = this._io.readU4le();44      this.lodsCount = this._io.readU4le();45    }46    return VstHeader;47  })();48  var Vertex = Vst.Vertex = (function() {49    function Vertex(_io, _parent, _root) {50      this._io = _io;51      this._parent = _parent;52      this._root = _root || this;53      this._read();54    }55    Vertex.prototype._read = function() {56      this.s = this._io.readF4le();57      this.t = this._io.readF4le();58      this.x = this._io.readF4le();59      this.y = this._io.readF4le();60      this.z = this._io.readF4le();61    }62    return Vertex;63  })();64  var LodHeader = Vst.LodHeader = (function() {65    function LodHeader(_io, _parent, _root) {66      this._io = _io;67      this._parent = _parent;68      this._root = _root || this;69      this._read();70    }71    LodHeader.prototype._read = function() {72      this.size = this._io.readU4le();73      this.reserved = this._io.readU8le();74      this.vertexCount = this._io.readU4le();75      this.threshold = this._io.readF4le();76      this.patchesCount = this._io.readU4le();77      this.highestVertex = this._io.readU4le();78    }79    return LodHeader;80  })();81  var Lod = Vst.Lod = (function() {82    function Lod(_io, _parent, _root) {83      this._io = _io;84      this._parent = _parent;85      this._root = _root || this;86      this._read();87    }88    Lod.prototype._read = function() {89      this.header = new LodHeader(this._io, this, this._root);90      this.boundingBox = new BoundingBox(this._io, this, this._root);91      this.patches = new Array(this.header.patchesCount);92      for (var i = 0; i < this.header.patchesCount; i++) {93        this.patches[i] = new Patch(this._io, this, this._root);94      }95    }96    return Lod;97  })();98  var VertexList = Vst.VertexList = (function() {99    function VertexList(_io, _parent, _root) {100      this._io = _io;101      this._parent = _parent;102      this._root = _root || this;103      this._read();104    }105    VertexList.prototype._read = function() {106      this.vertex = new Vertex(this._io, this, this._root);107    }108    return VertexList;109  })();110  var PatchHeader = Vst.PatchHeader = (function() {111    function PatchHeader(_io, _parent, _root) {112      this._io = _io;113      this._parent = _parent;114      this._root = _root || this;115      this._read();116    }117    PatchHeader.prototype._read = function() {118      this.reserved = this._io.readU8le();119      this.patchType = this._io.readU4le();120      this.textureIndex = this._io.readU4le();121      this.stripsCount = this._io.readU4le();122      this.indexCount = this._io.readU4le();123    }124    return PatchHeader;125  })();126  var BoundingBox = Vst.BoundingBox = (function() {127    function BoundingBox(_io, _parent, _root) {128      this._io = _io;129      this._parent = _parent;130      this._root = _root || this;131      this._read();132    }133    BoundingBox.prototype._read = function() {134      this.xmin = this._io.readF4le();135      this.ymin = this._io.readF4le();136      this.zmin = this._io.readF4le();137      this.xmax = this._io.readF4le();138      this.ymax = this._io.readF4le();139      this.zmax = this._io.readF4le();140    }141    return BoundingBox;142  })();143  var Patch = Vst.Patch = (function() {144    function Patch(_io, _parent, _root) {145      this._io = _io;146      this._parent = _parent;147      this._root = _root || this;148      this._read();149    }150    Patch.prototype._read = function() {151      this.header = new PatchHeader(this._io, this, this._root);152      this.trianglesStripsLengths = new Array(this.header.stripsCount);153      for (var i = 0; i < this.header.stripsCount; i++) {154        this.trianglesStripsLengths[i] = this._io.readU4le();155      }156      this.pointersToVertexOfFaces = new Array(this.header.indexCount);157      for (var i = 0; i < this.header.indexCount; i++) {158        this.pointersToVertexOfFaces[i] = this._io.readU4le();159      }160    }161    return Patch;162  })();163  Object.defineProperty(Vst.prototype, 'vertices', {164    get: function() {165      if (this._m_vertices !== undefined)166        return this._m_vertices;167      this._m_vertices = new Array(this.vistaHeader.vertexCount);168      for (var i = 0; i < this.vistaHeader.vertexCount; i++) {169        this._m_vertices[i] = new Vertex(this._io, this, this._root);170      }171      return this._m_vertices;172    }173  });174  Object.defineProperty(Vst.prototype, 'lods', {175    get: function() {176      if (this._m_lods !== undefined)177        return this._m_lods;178      var _pos = this._io.pos;179      this._io.seek(((((40 + 24) + (this.textureRef.length * this.vistaHeader.texturesCount)) + this.coordinateSystem.length) + ((this.vistaHeader.vertexCount * 4) * 5)));180      this._m_lods = new Array(this.vistaHeader.lodsCount);181      for (var i = 0; i < this.vistaHeader.lodsCount; i++) {182        this._m_lods[i] = new Lod(this._io, this, this._root);183      }184      this._io.seek(_pos);185      return this._m_lods;186    }187  });188  return Vst;189})();190return Vst;...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
