testjlcompress.cpp 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. #include "testjlcompress.h"
  2. #include "qztest.h"
  3. #include <QDir>
  4. #include <QFileInfo>
  5. #include <QtTest/QtTest>
  6. #include <quazip/jlcompress.h>
  7. void TestJlCompress::compressFile_data()
  8. {
  9. QTest::addColumn<QString>("zipName");
  10. QTest::addColumn<QString>("fileName");
  11. QTest::newRow("simple") << "jlsimplefile.zip" << "test0.txt";
  12. }
  13. void TestJlCompress::compressFile()
  14. {
  15. QFETCH(QString, zipName);
  16. QFETCH(QString, fileName);
  17. QDir curDir;
  18. if (curDir.exists(zipName)) {
  19. if (!curDir.remove(zipName))
  20. QFAIL("Can't remove zip file");
  21. }
  22. if (!createTestFiles(QStringList() << fileName)) {
  23. QFAIL("Can't create test file");
  24. }
  25. QVERIFY(JlCompress::compressFile(zipName, "tmp/" + fileName));
  26. // get the file list and check it
  27. QStringList fileList = JlCompress::getFileList(zipName);
  28. QCOMPARE(fileList.count(), 1);
  29. QVERIFY(fileList[0] == fileName);
  30. removeTestFiles(QStringList() << fileName);
  31. curDir.remove(zipName);
  32. }
  33. void TestJlCompress::compressFiles_data()
  34. {
  35. QTest::addColumn<QString>("zipName");
  36. QTest::addColumn<QStringList>("fileNames");
  37. QTest::newRow("simple") << "jlsimplefiles.zip" <<
  38. (QStringList() << "test0.txt" << "test00.txt");
  39. QTest::newRow("different subdirs") << "jlsubdirfiles.zip" <<
  40. (QStringList() << "subdir1/test1.txt" << "subdir2/test2.txt");
  41. }
  42. void TestJlCompress::compressFiles()
  43. {
  44. QFETCH(QString, zipName);
  45. QFETCH(QStringList, fileNames);
  46. QDir curDir;
  47. if (curDir.exists(zipName)) {
  48. if (!curDir.remove(zipName))
  49. QFAIL("Can't remove zip file");
  50. }
  51. if (!createTestFiles(fileNames)) {
  52. QFAIL("Can't create test files");
  53. }
  54. QStringList realNamesList, shortNamesList;
  55. foreach (QString fileName, fileNames) {
  56. QString realName = "tmp/" + fileName;
  57. realNamesList += realName;
  58. shortNamesList += QFileInfo(realName).fileName();
  59. }
  60. QVERIFY(JlCompress::compressFiles(zipName, realNamesList));
  61. // get the file list and check it
  62. QStringList fileList = JlCompress::getFileList(zipName);
  63. QCOMPARE(fileList, shortNamesList);
  64. removeTestFiles(fileNames);
  65. curDir.remove(zipName);
  66. }
  67. void TestJlCompress::compressDir_data()
  68. {
  69. QTest::addColumn<QString>("zipName");
  70. QTest::addColumn<QStringList>("fileNames");
  71. QTest::newRow("simple") << "jldir.zip" << (
  72. QStringList() << "test0.txt" << "testdir1/test1.txt"
  73. << "testdir2/test2.txt" << "testdir2/subdir/test2sub.txt");
  74. }
  75. void TestJlCompress::compressDir()
  76. {
  77. QFETCH(QString, zipName);
  78. QFETCH(QStringList, fileNames);
  79. QDir curDir;
  80. if (curDir.exists(zipName)) {
  81. if (!curDir.remove(zipName))
  82. QFAIL("Can't remove zip file");
  83. }
  84. if (!createTestFiles(fileNames)) {
  85. QFAIL("Can't create test files");
  86. }
  87. QVERIFY(JlCompress::compressDir(zipName, "tmp"));
  88. // get the file list and check it
  89. QStringList fileList = JlCompress::getFileList(zipName);
  90. qSort(fileList);
  91. qSort(fileNames);
  92. QCOMPARE(fileList, fileNames);
  93. removeTestFiles(fileNames);
  94. curDir.remove(zipName);
  95. }
  96. void TestJlCompress::extractFile_data()
  97. {
  98. QTest::addColumn<QString>("zipName");
  99. QTest::addColumn<QStringList>("fileNames");
  100. QTest::addColumn<QString>("fileToExtract");
  101. QTest::addColumn<QString>("destName");
  102. QTest::newRow("simple") << "jlextfile.zip" << (
  103. QStringList() << "test0.txt" << "testdir1/test1.txt"
  104. << "testdir2/test2.txt" << "testdir2/subdir/test2sub.txt")
  105. << "testdir2/test2.txt" << "test2.txt";
  106. }
  107. void TestJlCompress::extractFile()
  108. {
  109. QFETCH(QString, zipName);
  110. QFETCH(QStringList, fileNames);
  111. QFETCH(QString, fileToExtract);
  112. QFETCH(QString, destName);
  113. QDir curDir;
  114. if (!curDir.mkpath("jlext/jlfile")) {
  115. QFAIL("Couldn't mkpath jlext/jlfile");
  116. }
  117. if (!createTestFiles(fileNames)) {
  118. QFAIL("Couldn't create test files");
  119. }
  120. if (!JlCompress::compressDir(zipName, "tmp")) {
  121. QFAIL("Couldn't create test archive");
  122. }
  123. QVERIFY(!JlCompress::extractFile(zipName, fileToExtract,
  124. "jlext/jlfile/" + destName).isEmpty());
  125. QFileInfo destInfo("jlext/jlfile/" + destName), srcInfo("tmp/" +
  126. fileToExtract);
  127. QCOMPARE(destInfo.size(), srcInfo.size());
  128. curDir.remove("jlext/jlfile/" + destName);
  129. curDir.rmpath("jlext/jlfile");
  130. removeTestFiles(fileNames);
  131. curDir.remove(zipName);
  132. }
  133. void TestJlCompress::extractFiles_data()
  134. {
  135. QTest::addColumn<QString>("zipName");
  136. QTest::addColumn<QStringList>("fileNames");
  137. QTest::addColumn<QStringList>("filesToExtract");
  138. QTest::newRow("simple") << "jlextfiles.zip" << (
  139. QStringList() << "test0.txt" << "testdir1/test1.txt"
  140. << "testdir2/test2.txt" << "testdir2/subdir/test2sub.txt")
  141. << (QStringList() << "testdir2/test2.txt" << "testdir1/test1.txt");
  142. }
  143. void TestJlCompress::extractFiles()
  144. {
  145. QFETCH(QString, zipName);
  146. QFETCH(QStringList, fileNames);
  147. QFETCH(QStringList, filesToExtract);
  148. QDir curDir;
  149. if (!curDir.mkpath("jlext/jlfiles")) {
  150. QFAIL("Couldn't mkpath jlext/jlfiles");
  151. }
  152. if (!createTestFiles(fileNames)) {
  153. QFAIL("Couldn't create test files");
  154. }
  155. if (!JlCompress::compressDir(zipName, "tmp")) {
  156. QFAIL("Couldn't create test archive");
  157. }
  158. QVERIFY(!JlCompress::extractFiles(zipName, filesToExtract,
  159. "jlext/jlfiles").isEmpty());
  160. foreach (QString fileName, filesToExtract) {
  161. QFileInfo fileInfo("jlext/jlfiles/" + fileName);
  162. QCOMPARE(fileInfo.size(), QFileInfo("tmp/" + fileName).size());
  163. curDir.remove("jlext/jlfiles/" + fileName);
  164. curDir.rmpath(fileInfo.dir().path());
  165. }
  166. curDir.rmpath("jlext/jlfiles");
  167. removeTestFiles(fileNames);
  168. curDir.remove(zipName);
  169. }
  170. void TestJlCompress::extractDir_data()
  171. {
  172. QTest::addColumn<QString>("zipName");
  173. QTest::addColumn<QStringList>("fileNames");
  174. QTest::newRow("simple") << "jlextdir.zip" << (
  175. QStringList() << "test0.txt" << "testdir1/test1.txt"
  176. << "testdir2/test2.txt" << "testdir2/subdir/test2sub.txt");
  177. }
  178. void TestJlCompress::extractDir()
  179. {
  180. QFETCH(QString, zipName);
  181. QFETCH(QStringList, fileNames);
  182. QDir curDir;
  183. if (!curDir.mkpath("jlext/jldir")) {
  184. QFAIL("Couldn't mkpath jlext/jldir");
  185. }
  186. if (!createTestFiles(fileNames)) {
  187. QFAIL("Couldn't create test files");
  188. }
  189. if (!JlCompress::compressDir(zipName, "tmp")) {
  190. QFAIL("Couldn't create test archive");
  191. }
  192. QVERIFY(!JlCompress::extractDir(zipName, "jlext/jldir").isEmpty());
  193. foreach (QString fileName, fileNames) {
  194. QFileInfo fileInfo("jlext/jldir/" + fileName);
  195. QCOMPARE(fileInfo.size(), QFileInfo("tmp/" + fileName).size());
  196. curDir.remove("jlext/jldir/" + fileName);
  197. curDir.rmpath(fileInfo.dir().path());
  198. }
  199. curDir.rmpath("jlext/jldir");
  200. removeTestFiles(fileNames);
  201. curDir.remove(zipName);
  202. }