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.
+
+  **/
+}