Răsfoiți Sursa

Extended FileWriter class

- added "reset" method to FileWriter class for
setting a new file to write
- extended tests for FileWriter class
patrickmattulat 4 ani în urmă
părinte
comite
e2edbb19ab
3 a modificat fișierele cu 45 adăugiri și 6 ștergeri
  1. 15 4
      source/io/FileWriter.cpp
  2. 4 1
      source/io/FileWriter.hpp
  3. 26 1
      test/cases/io/FileWriterTest.cpp

+ 15 - 4
source/io/FileWriter.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
- * Changed:         2020-08-17
+ * Changed:         2020-08-19
  *
  * */
 
@@ -14,9 +14,13 @@
 ls_std::FileWriter::FileWriter(ls_std::File &_file) : Class("FileWriter"),
 file(_file)
 {
-  if(!_file.exists()) {
-    throw ls_std::FileNotFoundException {};
-  }
+  ls_std::FileWriter::_init(_file);
+}
+
+void ls_std::FileWriter::reset(File &_file)
+{
+  ls_std::FileWriter::_init(_file);
+  this->file = _file;
 }
 
 bool ls_std::FileWriter::write(const ls_std::byte* _data)
@@ -32,3 +36,10 @@ bool ls_std::FileWriter::write(const ls_std::byte* _data)
   outputStream.close();
   return succeeded;
 }
+
+void ls_std::FileWriter::_init(File &_file)
+{
+  if(!_file.exists()) {
+    throw ls_std::FileNotFoundException {};
+  }
+}

+ 4 - 1
source/io/FileWriter.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
- * Changed:         2020-08-17
+ * Changed:         2020-08-19
  *
  * */
 
@@ -21,11 +21,14 @@ namespace ls_std {
       explicit FileWriter(File& _file);
       ~FileWriter() = default;
 
+      void reset(File& _file);
       bool write(const ls_std::byte* _data) override;
 
     private:
 
       File file;
+
+      static void _init(File& _file);
   };
 }
 

+ 26 - 1
test/cases/io/FileWriterTest.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
- * Changed:         2020-08-17
+ * Changed:         2020-08-19
  *
  * */
 
@@ -23,6 +23,31 @@ namespace {
       void TearDown() override {}
   };
 
+  TEST_F(FileWriterTest, reset)
+  {
+    std::string path = TestHelper::getResourcesFolderLocation() + "tmp_file_writer_test.txt";
+    ls_std::File file {path};
+    file.createNewFile();
+    ls_std::FileWriter writer {file};
+    ASSERT_TRUE(writer.write("Testing something!\n"));
+
+    // reset
+
+    path = TestHelper::getResourcesFolderLocation() + "tmp_file_writer_test2.txt";
+    ls_std::File anotherFile {path};
+    anotherFile.createNewFile();
+
+    writer.reset(anotherFile);
+    ASSERT_TRUE(writer.write("Testing something else!\n"));
+
+    // remove
+
+    file.remove();
+    ASSERT_FALSE(file.exists());
+    anotherFile.remove();
+    ASSERT_FALSE(anotherFile.exists());
+  }
+
   TEST_F(FileWriterTest, write)
   {
     std::string path = TestHelper::getResourcesFolderLocation() + "tmp_file_writer_test.txt";