1
0

test_utils.cpp 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. #include "test_utils.h"
  2. #include <QDebug>
  3. #include <QTemporaryDir>
  4. #include <utils/pathutils.h>
  5. #include <utils/fileutils.h>
  6. using namespace tests;
  7. using namespace vnotex;
  8. void TestUtils::testParentDirPath_data()
  9. {
  10. QTest::addColumn<QString>("path");
  11. QTest::addColumn<QString>("result");
  12. QTest::newRow("empty") << "" << "";
  13. #if defined(Q_OS_WIN)
  14. QTest::newRow("win_root") << "c:\\" << "C:/";
  15. QTest::newRow("win_normal") << "c:\\users\\tamlok" << "C:/users";
  16. QTest::newRow("win_slash") << "c:\\users\\tamlok\\" << "C:/users/tamlok";
  17. QTest::newRow("win_ext") << "c:\\users\\tamlok\\vnotex.md" << "C:/users/tamlok";
  18. QTest::newRow("win_case") << "c:\\users\\Tamlok\\Vnotex.md" << "C:/users/Tamlok";
  19. QTest::newRow("win_sep") << "c:/users/tamlok/vnotex.md" << "C:/users/tamlok";
  20. #else
  21. QTest::newRow("linux_root") << "/home" << "/";
  22. QTest::newRow("linux_normal") << "/home/tamlok" << "/home";
  23. QTest::newRow("linux_slash") << "/home/tamlok/" << "/home/tamlok";
  24. QTest::newRow("linux_ext") << "/home/tamlok/vnotex.md" << "/home/tamlok";
  25. QTest::newRow("linux_case") << "/home/Tamlok/vnotex.md" << "/home/Tamlok";
  26. #endif
  27. }
  28. void TestUtils::testParentDirPath()
  29. {
  30. QFETCH(QString, path);
  31. QFETCH(QString, result);
  32. QCOMPARE(PathUtils::parentDirPath(path), result);
  33. }
  34. void TestUtils::testCleanPath_data()
  35. {
  36. QTest::addColumn<QString>("path");
  37. QTest::addColumn<QString>("result");
  38. QTest::newRow("empty") << "" << "";
  39. #if defined(Q_OS_WIN)
  40. QTest::newRow("win_root") << "c:" << "c:";
  41. QTest::newRow("win_normal") << "c:\\users\\tamlok" << "c:/users/tamlok";
  42. QTest::newRow("win_slash") << "c:\\users\\tamlok\\" << "c:/users/tamlok";
  43. QTest::newRow("win_ext") << "C:\\users\\tamlok\\vnotex.md" << "C:/users/tamlok/vnotex.md";
  44. QTest::newRow("win_case") << "c:\\users\\Tamlok" << "c:/users/Tamlok";
  45. QTest::newRow("win_sep") << "c:/users/tamlok" << "c:/users/tamlok";
  46. #else
  47. QTest::newRow("linux_root") << "/home" << "/home";
  48. QTest::newRow("linux_normal") << "/home/tamlok" << "/home/tamlok";
  49. QTest::newRow("linux_slash") << "/home/tamlok/" << "/home/tamlok";
  50. QTest::newRow("linux_ext") << "/home/tamlok/vnotex.md" << "/home/tamlok/vnotex.md";
  51. QTest::newRow("linux_case") << "/home/Tamlok/vnotex.md" << "/home/Tamlok/vnotex.md";
  52. #endif
  53. }
  54. void TestUtils::testCleanPath()
  55. {
  56. QFETCH(QString, path);
  57. QFETCH(QString, result);
  58. QCOMPARE(PathUtils::cleanPath(path), result);
  59. }
  60. void TestUtils::testAreSamePaths_data()
  61. {
  62. QTest::addColumn<QString>("patha");
  63. QTest::addColumn<QString>("pathb");
  64. QTest::addColumn<bool>("result");
  65. QTest::newRow("empty") << "" << "" << true;
  66. #if defined(Q_OS_WIN)
  67. QTest::newRow("win_normal") << "c:\\users\\tamlok" << "c:\\users\\tamlok" << true;
  68. QTest::newRow("win_slash") << "c:\\users\\vnotex\\" << "c:/users/vnotex" << true;
  69. QTest::newRow("win_file") << "C:\\users\\tamlok\\vnotex.md" << "C:/users/tamlok/vnotex.md" << true;
  70. QTest::newRow("win_file_false") << "C:\\users\\tamlok\\vnote.md" << "C:/users/tamlok/vnotex.md" << false;
  71. QTest::newRow("win_case") << "c:\\users\\Tamlok" << "C:/users/tamlok" << true;
  72. #else
  73. QTest::newRow("linux_normal") << "/home/tamlok" << "/home/tamlok" << true;
  74. QTest::newRow("linux_slash") << "/home/tamlok/" << "/home/tamlok" << true;
  75. QTest::newRow("linux_file") << "/home/tamlok/vnotex.md" << "/home/tamlok/vnotex.md" << true;
  76. QTest::newRow("linux_file_false") << "/home/tamlok/vnote.md" << "/home/tamlok/vnotex.md" << false;
  77. QTest::newRow("linux_case") << "/home/Tamlok/vnotex.md" << "/home/tamlok/vnotex.md" << false;
  78. #endif
  79. }
  80. void TestUtils::testAreSamePaths()
  81. {
  82. QFETCH(QString, patha);
  83. QFETCH(QString, pathb);
  84. QFETCH(bool, result);
  85. QCOMPARE(PathUtils::areSamePaths(patha, pathb), result);
  86. }
  87. void TestUtils::testPathContains_data()
  88. {
  89. QTest::addColumn<QString>("patha");
  90. QTest::addColumn<QString>("pathb");
  91. QTest::addColumn<bool>("result");
  92. QTest::newRow("empty") << "" << "" << true;
  93. #if defined(Q_OS_WIN)
  94. QTest::newRow("win_same") << "c:\\users\\tamlok" << "c:\\users\\tamlok" << true;
  95. QTest::newRow("win_slash") << "c:\\users\\vnotex\\" << "c:\\users\\vnotex" << true;
  96. QTest::newRow("win_file") << "C:\\users\\tamlok" << "C:/users/tamlok/vnotex.md" << true;
  97. QTest::newRow("win_relative") << "C:\\users\\tamlok" << "tamlok/vnotex.md" << true;
  98. QTest::newRow("win_root") << "c:\\users\\Tamlok" << "D:/users/tamlok" << false;
  99. QTest::newRow("win_case") << "c:\\users\\Tamlok" << "c:/users/tamlok/abc" << true;
  100. QTest::newRow("win_parent") << "c:\\users\\Tamlok\\abc" << "c:/users/tamlok" << false;
  101. QTest::newRow("win_parents") << "c:\\users\\Tamlok\\abc\\def" << "c:/users/tamlok" << false;
  102. #else
  103. QTest::newRow("linux_same") << "/home/tamlok" << "/home/tamlok" << true;
  104. QTest::newRow("linux_slash") << "/home/tamlok/" << "/home/tamlok" << true;
  105. QTest::newRow("linux_file") << "/home/tamlok" << "/home/tamlok/vnotex.md" << true;
  106. QTest::newRow("linux_relative") << "/home/tamlok" << "tamlok/vnotex.md" << true;
  107. QTest::newRow("linux_root") << "/home/tamlok" << "/tamlok/vnotex.md" << false;
  108. QTest::newRow("linux_case") << "/home/Tamlok" << "/home/tamlok/vnotex.md" << false;
  109. QTest::newRow("linux_parent") << "/home/tamlok/abc" << "/home/tamlok" << false;
  110. QTest::newRow("linux_parents") << "/home/tamlok/abc/def" << "/home/tamlok" << false;
  111. #endif
  112. }
  113. void TestUtils::testPathContains()
  114. {
  115. QFETCH(QString, patha);
  116. QFETCH(QString, pathb);
  117. QFETCH(bool, result);
  118. QCOMPARE(PathUtils::pathContains(patha, pathb), result);
  119. }
  120. void TestUtils::testConcatenateFilePath_data()
  121. {
  122. QTest::addColumn<QString>("dirPath");
  123. QTest::addColumn<QString>("name");
  124. QTest::addColumn<QString>("result");
  125. QTest::newRow("emptyDir") << "" << "filea" << "filea";
  126. #if defined(Q_OS_WIN)
  127. QTest::newRow("win_absolute") << "c:\\users\\tamlok" << "filea" << "c:/users/tamlok/filea";
  128. QTest::newRow("win_slash") << "c:\\users\\vnotex\\" << "filea" << "c:/users/vnotex/filea";
  129. QTest::newRow("win_slash2") << "C:/users/tamlok///" << "filea" << "C:/users/tamlok/filea";
  130. QTest::newRow("win_relative") << "users\\tamlok" << "filea" << "users/tamlok/filea";
  131. QTest::newRow("win_path") << "c:\\users\\tamlok" << "folder/filea" << "c:/users/tamlok/folder/filea";
  132. #else
  133. QTest::newRow("linux_absolute") << "/home/tamlok" << "filea" << "/home/tamlok/filea";
  134. QTest::newRow("linux_slash") << "/home/tamlok///" << "filea" << "/home/tamlok/filea";
  135. QTest::newRow("linux_relative") << "home/tamlok" << "filea" << "home/tamlok/filea";
  136. QTest::newRow("linux_path") << "/home/tamloK" << "folder/filea" << "/home/tamloK/folder/filea";
  137. #endif
  138. }
  139. void TestUtils::testConcatenateFilePath()
  140. {
  141. QFETCH(QString, dirPath);
  142. QFETCH(QString, name);
  143. QFETCH(QString, result);
  144. QCOMPARE(PathUtils::concatenateFilePath(dirPath, name), result);
  145. }
  146. void TestUtils::testRenameFile()
  147. {
  148. QTemporaryDir dir;
  149. const QString testFolderPath(dir.path());
  150. // File.
  151. {
  152. QString fileAPath = testFolderPath + "/filea.md";
  153. QFile fileA(fileAPath);
  154. QVERIFY(fileA.open(QIODevice::WriteOnly | QIODevice::Text));
  155. fileA.write(QByteArray());
  156. fileA.close();
  157. QVERIFY(QFileInfo::exists(fileAPath));
  158. FileUtils::renameFile(fileAPath, "fileb.md");
  159. QString newFileAPath = testFolderPath + "/fileb.md";
  160. QVERIFY(QFileInfo::exists(newFileAPath));
  161. }
  162. // Folder.
  163. {
  164. QDir paDir(testFolderPath);
  165. QString dirAPath = testFolderPath + "/dira";
  166. QVERIFY(paDir.mkdir("dira"));
  167. FileUtils::renameFile(dirAPath, "dirb");
  168. QVERIFY(paDir.exists("dirb"));
  169. }
  170. }
  171. void TestUtils::testIsText()
  172. {
  173. QTemporaryDir dir;
  174. const QString testFolderPath(dir.path());
  175. {
  176. auto filePath = testFolderPath + "/text";
  177. QFile file(filePath);
  178. QVERIFY(file.open(QIODevice::WriteOnly | QIODevice::Text));
  179. file.write(QByteArray(5, 'v'));
  180. file.close();
  181. QVERIFY(QFileInfo::exists(filePath));
  182. QVERIFY(FileUtils::isText(filePath));
  183. }
  184. {
  185. auto filePath = testFolderPath + "/bin";
  186. QFile file(filePath);
  187. QVERIFY(file.open(QIODevice::WriteOnly));
  188. file.write(reinterpret_cast<const char *>(&file), sizeof(file));
  189. file.close();
  190. QVERIFY(QFileInfo::exists(filePath));
  191. QVERIFY(!FileUtils::isText(filePath));
  192. }
  193. }
  194. QTEST_MAIN(tests::TestUtils)