Mercurial > hg > orthanc
diff UnitTests/Zip.cpp @ 247:c9b3ba0fd140
path management in zip files
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 04 Dec 2012 17:27:23 +0100 |
parents | 0ec5e2e327b1 |
children | 5694365ecb96 |
line wrap: on
line diff
--- a/UnitTests/Zip.cpp Fri Nov 30 17:09:52 2012 +0100 +++ b/UnitTests/Zip.cpp Tue Dec 04 17:27:23 2012 +0100 @@ -2,8 +2,12 @@ #include "../Core/OrthancException.h" #include "../Core/Compression/ZipWriter.h" +#include "../Core/Compression/HierarchicalZipWriter.h" +#include "../Core/Toolbox.h" +using namespace Orthanc; + TEST(ZipWriter, Basic) { Orthanc::ZipWriter w; @@ -22,3 +26,95 @@ w.Open(); ASSERT_THROW(w.Write("hello world"), Orthanc::OrthancException); } + + + + + +namespace Orthanc +{ + // The namespace is necessary + // http://code.google.com/p/googletest/wiki/AdvancedGuide#Private_Class_Members + + TEST(HierarchicalZipWriter, Index) + { + HierarchicalZipWriter::Index i; + ASSERT_EQ("hello", i.CreateFile("hello")); + ASSERT_EQ("hello-2", i.CreateFile("hello")); + ASSERT_EQ("coucou", i.CreateFile("coucou")); + ASSERT_EQ("hello-3", i.CreateFile("hello")); + + i.CreateDirectory("coucou"); + + ASSERT_EQ("coucou-2/world", i.CreateFile("world")); + ASSERT_EQ("coucou-2/world-2", i.CreateFile("world")); + + i.CreateDirectory("world"); + + ASSERT_EQ("coucou-2/world-3/hello", i.CreateFile("hello")); + ASSERT_EQ("coucou-2/world-3/hello-2", i.CreateFile("hello")); + + i.CloseDirectory(); + + ASSERT_EQ("coucou-2/world-4", i.CreateFile("world")); + + i.CloseDirectory(); + + ASSERT_EQ("coucou-3", i.CreateFile("coucou")); + + ASSERT_THROW(i.CloseDirectory(), OrthancException); + } + + + TEST(HierarchicalZipWriter, Filenames) + { + ASSERT_EQ("trE hell", HierarchicalZipWriter::Index::KeepAlphanumeric(" ÊtrE hellô ")); + ASSERT_EQ("Hello world", HierarchicalZipWriter::Index::KeepAlphanumeric(" Hel^^lo \t <world> ")); + } +} + + +TEST(HierarchicalZipWriter, Basic) +{ + static const std::string SPACES = " "; + + HierarchicalZipWriter w("hello2.zip"); + + w.SetCompressionLevel(0); + + // Inside "/" + w.CreateFile("hello"); + w.Write(SPACES + "hello\n"); + w.CreateFile("hello"); + w.Write(SPACES + "hello-2\n"); + w.CreateDirectory("hello"); + + // Inside "/hello-3" + w.CreateFile("hello"); + w.Write(SPACES + "hello\n"); + w.CreateDirectory("hello"); + + w.SetCompressionLevel(9); + + // Inside "/hello-3/hello-2" + w.CreateFile("hello"); + w.Write(SPACES + "hello\n"); + w.CreateFile("hello"); + w.Write(SPACES + "hello-2\n"); + w.CloseDirectory(); + + // Inside "/hello-3" + w.CreateFile("hello"); + w.Write(SPACES + "hello-3\n"); + + /** + + TO CHECK THE CONTENT OF THE "hello2.zip" FILE: + + # unzip -v hello2.zip + + => There must be 6 files. The first 3 files must have a negative + compression ratio. + + **/ +}