FileTest.cpp 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. /*
  2. * Author: Patrick-Christopher Mattulat
  3. * Company: Lynar Studios
  4. * E-Mail: webmaster@lynarstudios.com
  5. * Created: 2020-08-15
  6. * Changed: 2020-08-17
  7. *
  8. * */
  9. #include <gtest/gtest.h>
  10. #include "../../../source/io/File.hpp"
  11. #include "../../../source/io/FilePathSeparator.hpp"
  12. #include "../../TestHelper.hpp"
  13. namespace {
  14. class FileTest : public ::testing::Test {
  15. protected:
  16. FileTest() = default;
  17. ~FileTest() override = default;
  18. std::string fileLocation = TestHelper::getResourcesFolderLocation() + "simple.txt";
  19. void SetUp() override {}
  20. void TearDown() override {}
  21. };
  22. // comparison operators
  23. TEST_F(FileTest, operatorEqual)
  24. {
  25. ls_std::File file {this->fileLocation};
  26. ls_std::File file2 {this->fileLocation};
  27. ls_std::File file3 {"/home/bla/text.txt"};
  28. ls_std::File file4 {"\\home/bla\\text.txt"};
  29. ASSERT_TRUE(file == file2);
  30. ASSERT_TRUE(file2 == file);
  31. ASSERT_TRUE(file3 == file4);
  32. ASSERT_TRUE(file4 == file3);
  33. }
  34. TEST_F(FileTest, operatorNotEqual)
  35. {
  36. ls_std::File file {this->fileLocation};
  37. ls_std::File file2 {TestHelper::getResourcesFolderLocation() + "app.exe"};
  38. ASSERT_TRUE(file != file2);
  39. ASSERT_TRUE(file2 != file);
  40. }
  41. // additional functionality
  42. TEST_F(FileTest, canExecute)
  43. {
  44. #ifdef _WIN32
  45. ls_std::File executableFile {TestHelper::getResourcesFolderLocation() + "app.exe"};
  46. #endif
  47. #if defined(unix) || defined(__APPLE__)
  48. ls_std::File executableFile {TestHelper::getResourcesFolderLocation() + "app"};
  49. #endif
  50. ASSERT_TRUE(executableFile.canExecute());
  51. }
  52. TEST_F(FileTest, canExecuteNegative)
  53. {
  54. ls_std::File file {this->fileLocation};
  55. ASSERT_FALSE(file.canExecute());
  56. }
  57. TEST_F(FileTest, createNewFileAndRemove)
  58. {
  59. ls_std::File file {TestHelper::getResourcesFolderLocation() + "tmp.txt"};
  60. ASSERT_FALSE(file.exists());
  61. file.createNewFile();
  62. ASSERT_TRUE(file.exists());
  63. file.remove();
  64. ASSERT_FALSE(file.exists());
  65. }
  66. TEST_F(FileTest, exists)
  67. {
  68. ls_std::File file {this->fileLocation};
  69. ls_std::File directory {TestHelper::getResourcesFolderLocation()};
  70. ASSERT_TRUE(file.exists());
  71. ASSERT_TRUE(directory.exists());
  72. }
  73. TEST_F(FileTest, existsNegative)
  74. {
  75. ls_std::File file {TestHelper::getResourcesFolderLocation() + "bla.txt"};
  76. ASSERT_FALSE(file.exists());
  77. }
  78. TEST_F(FileTest, getAbsoluteFilePath)
  79. {
  80. ls_std::File file {this->fileLocation};
  81. ASSERT_STREQ(fileLocation.c_str(), file.getAbsoluteFilePath().c_str());
  82. }
  83. TEST_F(FileTest, getName)
  84. {
  85. ls_std::File file {this->fileLocation};
  86. ls_std::File executableFile {TestHelper::getResourcesFolderLocation() + "app.exe"};
  87. ls_std::File anotherFile {"bla.txt"};
  88. ls_std::File directory {TestHelper::getResourcesFolderLocation()};
  89. ASSERT_STREQ("simple.txt", file.getName().c_str());
  90. ASSERT_STREQ("app.exe", executableFile.getName().c_str());
  91. ASSERT_STREQ("bla.txt", anotherFile.getName().c_str());
  92. ASSERT_STREQ("resources", directory.getName().c_str());
  93. }
  94. TEST_F(FileTest, getParent)
  95. {
  96. ls_std::File file {this->fileLocation};
  97. ASSERT_STREQ(TestHelper::getResourcesFolderLocation().c_str(), file.getParent().c_str());
  98. }
  99. TEST_F(FileTest, getSize)
  100. {
  101. ls_std::File file {this->fileLocation};
  102. #ifdef _WIN32
  103. ASSERT_EQ(8, file.getSize());
  104. #endif
  105. #if defined(unix) || defined(__APPLE__)
  106. ASSERT_EQ(7, file.getSize());
  107. #endif
  108. }
  109. TEST_F(FileTest, isDirectory)
  110. {
  111. ls_std::File directory {TestHelper::getResourcesFolderLocation()};
  112. ASSERT_TRUE(directory.isDirectory());
  113. }
  114. TEST_F(FileTest, isDirectoryNegative)
  115. {
  116. ls_std::File file {this->fileLocation};
  117. ASSERT_FALSE(file.isDirectory());
  118. }
  119. TEST_F(FileTest, isFile)
  120. {
  121. ls_std::File file {this->fileLocation};
  122. ASSERT_TRUE(file.isFile());
  123. }
  124. TEST_F(FileTest, isFileNegative)
  125. {
  126. ls_std::File directory {TestHelper::getResourcesFolderLocation()};
  127. ASSERT_FALSE(directory.isFile());
  128. }
  129. TEST_F(FileTest, lastModified)
  130. {
  131. ls_std::File file {this->fileLocation};
  132. ASSERT_TRUE(file.lastModified() > 1590000000);
  133. }
  134. TEST_F(FileTest, list)
  135. {
  136. ls_std::File file {TestHelper::getResourcesFolderLocation() + "list_test"};
  137. std::list<std::string> filesInDirectory = file.list();
  138. auto filesIterator = filesInDirectory.begin();
  139. ASSERT_FALSE(filesInDirectory.empty());
  140. ASSERT_EQ(6, filesInDirectory.size());
  141. ASSERT_STREQ(std::string(file.getParent() + ".").c_str(), filesIterator->c_str());
  142. filesIterator++;
  143. ASSERT_STREQ(std::string(file.getParent() + "..").c_str(), filesIterator->c_str());
  144. filesIterator++;
  145. ASSERT_STREQ(std::string(file.getParent() + "another_file.txt").c_str(), filesIterator->c_str());
  146. filesIterator++;
  147. ASSERT_STREQ(std::string(file.getParent() + "bla.txt").c_str(), filesIterator->c_str());
  148. filesIterator++;
  149. ASSERT_STREQ(std::string(file.getParent() + "hello.txt").c_str(), filesIterator->c_str());
  150. filesIterator++;
  151. ASSERT_STREQ(std::string(file.getParent() + "list_test_sub").c_str(), filesIterator->c_str());
  152. }
  153. TEST_F(FileTest, makeDirectory)
  154. {
  155. ls_std::File directory {TestHelper::getResourcesFolderLocation() + "testDir"};
  156. ASSERT_FALSE(directory.exists());
  157. directory.makeDirectory();
  158. ASSERT_TRUE(directory.exists());
  159. directory.remove();
  160. ASSERT_FALSE(directory.exists());
  161. }
  162. TEST_F(FileTest, makeDirectories)
  163. {
  164. ls_std::File directory {TestHelper::getResourcesFolderLocation() + "testDir/sub/tmp/bla"};
  165. ASSERT_FALSE(directory.exists());
  166. directory.makeDirectories();
  167. ASSERT_TRUE(directory.exists());
  168. // clean up
  169. directory.remove();
  170. directory = ls_std::File(TestHelper::getResourcesFolderLocation() + "testDir/sub/tmp");
  171. directory.remove();
  172. directory = ls_std::File(TestHelper::getResourcesFolderLocation() + "testDir/sub");
  173. directory.remove();
  174. directory = ls_std::File(TestHelper::getResourcesFolderLocation() + "testDir");
  175. directory.remove();
  176. }
  177. }