Przeglądaj źródła

Extended File class

- added "lastModified" method
- extended tests for File class
Patrick 4 lat temu
rodzic
commit
9ea81afcfa
3 zmienionych plików z 26 dodań i 0 usunięć
  1. 17 0
      source/io/File.cpp
  2. 3 0
      source/io/File.hpp
  3. 6 0
      test/cases/io/FileTest.cpp

+ 17 - 0
source/io/File.cpp

@@ -124,6 +124,11 @@ bool ls_std::File::isFile()
   return this->_isFile(this->absoluteFilePath);
 }
 
+time_t ls_std::File::lastModified()
+{
+  return ls_std::File::_lastModified(this->absoluteFilePath);
+}
+
 void ls_std::File::makeDirectory()
 {
   if(ls_std::File::_mkdir(this->absoluteFilePath)) {
@@ -192,6 +197,18 @@ bool ls_std::File::_isFile(const std::string& _path)
   return match;
 }
 
+time_t ls_std::File::_lastModified(const std::string &_path)
+{
+  time_t lastModifiedTimeStamp {};
+  struct stat _stat {};
+
+  if(stat(_path.c_str(), &_stat) == 0) {
+    lastModifiedTimeStamp = _stat.st_mtime;
+  }
+
+  return lastModifiedTimeStamp;
+}
+
 int ls_std::File::_mkdir(const std::string& _path) {
   int result;
 

+ 3 - 0
source/io/File.hpp

@@ -13,6 +13,7 @@
 #include "../base/Class.hpp"
 #include <string>
 #include <vector>
+#include <ctime>
 
 namespace ls_std {
   class File : public Class {
@@ -37,6 +38,7 @@ namespace ls_std {
       long getSize();
       bool isDirectory();
       bool isFile();
+      time_t lastModified();
       void makeDirectory();
       void makeDirectories();
       void remove();
@@ -48,6 +50,7 @@ namespace ls_std {
       bool _exists(const std::string& _path);
       bool _isDirectory(const std::string& _path);
       bool _isFile(const std::string& _path);
+      static time_t _lastModified(const std::string& _path);
       static int _mkdir(const std::string& _path);
       static std::string _normalizePath(std::string _path);
       static std::vector<std::string> _splitIntoSubDirectoryNames(const std::string& _path);

+ 6 - 0
test/cases/io/FileTest.cpp

@@ -162,6 +162,12 @@ namespace {
     ASSERT_FALSE(directory.isFile());
   }
 
+  TEST_F(FileTest, lastModified)
+  {
+    ls_std::File file {this->fileLocation};
+    ASSERT_EQ(1597475488, file.lastModified());
+  }
+
   TEST_F(FileTest, makeDirectory)
   {
     ls_std::File directory {TestHelper::getResourcesFolderLocation() + "testDir"};