diff --git a/tests/src/CMakeLists.txt b/tests/src/CMakeLists.txt index 2f5f8257e2..58e152818d 100644 --- a/tests/src/CMakeLists.txt +++ b/tests/src/CMakeLists.txt @@ -3,3 +3,4 @@ add_subdirectory(App) add_subdirectory(Gui) add_subdirectory(Misc) add_subdirectory(Qt) +add_subdirectory(zipios++) diff --git a/tests/src/zipios++/CMakeLists.txt b/tests/src/zipios++/CMakeLists.txt new file mode 100644 index 0000000000..4d34c683da --- /dev/null +++ b/tests/src/zipios++/CMakeLists.txt @@ -0,0 +1,6 @@ +target_sources( + Tests_run + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/collectioncollection.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/zipfile.cpp +) diff --git a/tests/src/zipios++/collectioncollection.cpp b/tests/src/zipios++/collectioncollection.cpp new file mode 100644 index 0000000000..2d3228d9e1 --- /dev/null +++ b/tests/src/zipios++/collectioncollection.cpp @@ -0,0 +1,73 @@ +#include "gtest/gtest.h" +#include +#include + +// NOLINTBEGIN(cppcoreguidelines-avoid-magic-numbers,readability-magic-numbers) +TEST(Collection, TestValidity) +{ + zipios::CollectionCollection cc; + EXPECT_EQ(cc.isValid(), true); + EXPECT_EQ(cc.entries().empty(), true); + EXPECT_EQ(cc.getEntry("inexistant", zipios::FileCollection::MatchPath::MATCH), nullptr); + EXPECT_EQ(cc.getEntry("inexistant", zipios::FileCollection::MatchPath::IGNORE), nullptr); + EXPECT_EQ(cc.getInputStream("inexistant", zipios::FileCollection::MatchPath::MATCH), nullptr); + EXPECT_EQ(cc.getInputStream("inexistant", zipios::FileCollection::MatchPath::IGNORE), nullptr); + EXPECT_EQ(cc.getName(), "-"); // default name is "-" + EXPECT_EQ(cc.size(), 0); + cc.close(); + EXPECT_EQ(cc.isValid(), false); +} + +TEST(Collection, TestCopy) +{ + zipios::CollectionCollection cc; + zipios::CollectionCollection copy(cc); + EXPECT_EQ(copy.isValid(), true); + EXPECT_EQ(copy.entries().empty(), true); + EXPECT_EQ(copy.getEntry("inexistant", zipios::FileCollection::MatchPath::MATCH), nullptr); + EXPECT_EQ(copy.getEntry("inexistant", zipios::FileCollection::MatchPath::IGNORE), nullptr); + EXPECT_EQ(copy.getInputStream("inexistant", zipios::FileCollection::MatchPath::MATCH), nullptr); + EXPECT_EQ(copy.getInputStream("inexistant", zipios::FileCollection::MatchPath::IGNORE), nullptr); + EXPECT_EQ(copy.getName(), "-"); // default name is "-" + EXPECT_EQ(copy.size(), 0); +} + +TEST(Collection, TestCopyAssign) +{ + zipios::CollectionCollection cc; + zipios::CollectionCollection copy; + copy = cc; + EXPECT_EQ(copy.isValid(), true); + EXPECT_EQ(copy.entries().empty(), true); + EXPECT_EQ(copy.getEntry("inexistant", zipios::FileCollection::MatchPath::MATCH), nullptr); + EXPECT_EQ(copy.getEntry("inexistant", zipios::FileCollection::MatchPath::IGNORE), nullptr); + EXPECT_EQ(copy.getInputStream("inexistant", zipios::FileCollection::MatchPath::MATCH), nullptr); + EXPECT_EQ(copy.getInputStream("inexistant", zipios::FileCollection::MatchPath::IGNORE), nullptr); + EXPECT_EQ(copy.getName(), "-"); // default name is "-" + EXPECT_EQ(copy.size(), 0); +} + +TEST(Collection, TestClone) +{ + zipios::CollectionCollection cc; + std::unique_ptr pointer(cc.clone()); + EXPECT_EQ(pointer->isValid(), true); + EXPECT_EQ(pointer->entries().empty(), true); + EXPECT_EQ(pointer->getEntry("inexistant", zipios::FileCollection::MatchPath::MATCH), nullptr); + EXPECT_EQ(pointer->getEntry("inexistant", zipios::FileCollection::MatchPath::IGNORE), nullptr); + EXPECT_EQ(pointer->getInputStream("inexistant", zipios::FileCollection::MatchPath::MATCH), nullptr); + EXPECT_EQ(pointer->getInputStream("inexistant", zipios::FileCollection::MatchPath::IGNORE), nullptr); + EXPECT_EQ(pointer->getName(), "-"); // default name is "-" + EXPECT_EQ(pointer->size(), 0); +} + +TEST(Collection, TestAdd) +{ + zipios::CollectionCollection cc; + zipios::FileCollection* pointer(cc.clone()); + EXPECT_EQ(cc.addCollection(pointer), true); + EXPECT_EQ(cc.addCollection(nullptr), false); + EXPECT_EQ(cc.addCollection(cc), false); +} + +// NOLINTEND(cppcoreguidelines-avoid-magic-numbers,readability-magic-numbers) diff --git a/tests/src/zipios++/zipfile.cpp b/tests/src/zipios++/zipfile.cpp new file mode 100644 index 0000000000..5ba5f0da55 --- /dev/null +++ b/tests/src/zipios++/zipfile.cpp @@ -0,0 +1,71 @@ +#include "gtest/gtest.h" +#include +#include +#include + +// NOLINTBEGIN(cppcoreguidelines-avoid-magic-numbers,readability-magic-numbers) +TEST(ZipFile, TestValidity) +{ + zipios::ZipFile zf; + EXPECT_EQ(zf.isValid(), false); + EXPECT_THROW(zf.entries(), zipios::InvalidStateException); + EXPECT_THROW(zf.getEntry("inexistant", zipios::FileCollection::MatchPath::MATCH), zipios::InvalidStateException); + EXPECT_THROW(zf.getEntry("inexistant", zipios::FileCollection::MatchPath::IGNORE), zipios::InvalidStateException); + EXPECT_THROW(zf.getInputStream("inexistant", zipios::FileCollection::MatchPath::MATCH), zipios::InvalidStateException); + EXPECT_THROW(zf.getInputStream("inexistant", zipios::FileCollection::MatchPath::IGNORE), zipios::InvalidStateException); + EXPECT_THROW(zf.getName(), zipios::InvalidStateException); + EXPECT_THROW(zf.size(), zipios::InvalidStateException); + zf.close(); + EXPECT_EQ(zf.isValid(), false); +} + +TEST(ZipFile, TestNonExisting) +{ + zipios::ZipFile zf("this/file/does/not/exist"); + EXPECT_EQ(zf.isValid(), false); +} + +class ZipFileTest : public ::testing::Test { +protected: + void SetUp() override { + std::ofstream os("empty.zip", std::ios::out | std::ios::binary); + os << static_cast(0x50); + os << static_cast(0x4B); + os << static_cast(0x05); + os << static_cast(0x06); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + os << static_cast(0x00); + } + void TearDown() override { + // delete empty.zip + std::remove("empty.zip"); + } +}; + +TEST_F(ZipFileTest, TestValid) +{ + zipios::ZipFile zf("empty.zip"); + EXPECT_EQ(zf.isValid(), true); + EXPECT_EQ(zf.entries().empty(), true); + EXPECT_EQ(zf.getName(), "empty.zip"); + EXPECT_EQ(zf.size(), 0); + zf.close(); + EXPECT_EQ(zf.isValid(), false); +} +// NOLINTEND(cppcoreguidelines-avoid-magic-numbers,readability-magic-numbers)