testquazip.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "testquazip.h"
  2. #include "qztest.h"
  3. #include <QDir>
  4. #include <QFileInfo>
  5. #include <QHash>
  6. #include <QtTest/QtTest>
  7. #include <quazip/quazip.h>
  8. #include <quazip/jlcompress.h>
  9. void TestQuaZip::getFileList_data()
  10. {
  11. QTest::addColumn<QString>("zipName");
  12. QTest::addColumn<QStringList>("fileNames");
  13. QTest::newRow("simple") << "qzfilelist.zip" << (
  14. QStringList() << "test0.txt" << "testdir1/test1.txt"
  15. << "testdir2/test2.txt" << "testdir2/subdir/test2sub.txt");
  16. }
  17. void TestQuaZip::getFileList()
  18. {
  19. QFETCH(QString, zipName);
  20. QFETCH(QStringList, fileNames);
  21. qSort(fileNames);
  22. QDir curDir;
  23. if (curDir.exists(zipName)) {
  24. if (!curDir.remove(zipName))
  25. QFAIL("Can't remove zip file");
  26. }
  27. if (!createTestFiles(fileNames)) {
  28. QFAIL("Can't create test file");
  29. }
  30. if (!JlCompress::compressDir(zipName, "tmp")) {
  31. QFAIL("Can't create test archive");
  32. }
  33. QuaZip testZip(zipName);
  34. QVERIFY(testZip.open(QuaZip::mdUnzip));
  35. QVERIFY(testZip.goToFirstFile());
  36. QString firstFile = testZip.getCurrentFileName();
  37. QStringList fileList = testZip.getFileNameList();
  38. qSort(fileList);
  39. QCOMPARE(fileList, fileNames);
  40. QHash<QString, QFileInfo> srcInfo;
  41. foreach (QString fileName, fileNames) {
  42. srcInfo[fileName] = QFileInfo("tmp/" + fileName);
  43. }
  44. QList<QuaZipFileInfo> destList = testZip.getFileInfoList();
  45. QCOMPARE(destList.size(), srcInfo.size());
  46. for (int i = 0; i < destList.size(); i++) {
  47. QCOMPARE(static_cast<qint64>(destList[i].uncompressedSize),
  48. srcInfo[destList[i].name].size());
  49. }
  50. // test that we didn't mess up the current file
  51. QCOMPARE(testZip.getCurrentFileName(), firstFile);
  52. testZip.close();
  53. // clean up
  54. removeTestFiles(fileNames);
  55. QVERIFY(curDir.remove(zipName));
  56. }