comparison UnitTestsSources/Zip.cpp @ 762:45b16f67259c lua-scripting

integration mainline -> lua-scripting
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 22 Apr 2014 16:47:21 +0200
parents eb5a0b21d05e
children 4689e400e0fa
comparison
equal deleted inserted replaced
409:63f707278fc8 762:45b16f67259c
1 #include "gtest/gtest.h"
2
3 #include "../Core/OrthancException.h"
4 #include "../Core/Compression/ZipWriter.h"
5 #include "../Core/Compression/HierarchicalZipWriter.h"
6 #include "../Core/Toolbox.h"
7
8
9 using namespace Orthanc;
10
11 TEST(ZipWriter, Basic)
12 {
13 Orthanc::ZipWriter w;
14 w.SetOutputPath("hello.zip");
15 w.Open();
16 w.OpenFile("world/hello");
17 w.Write("Hello world");
18 }
19
20
21 TEST(ZipWriter, Basic64)
22 {
23 Orthanc::ZipWriter w;
24 w.SetOutputPath("hello64.zip");
25 w.SetZip64(true);
26 w.Open();
27 w.OpenFile("world/hello");
28 w.Write("Hello world");
29 }
30
31
32 TEST(ZipWriter, Exceptions)
33 {
34 Orthanc::ZipWriter w;
35 ASSERT_THROW(w.Open(), Orthanc::OrthancException);
36 w.SetOutputPath("hello3.zip");
37 w.Open();
38 ASSERT_THROW(w.Write("hello world"), Orthanc::OrthancException);
39 }
40
41
42
43
44
45 namespace Orthanc
46 {
47 // The namespace is necessary
48 // http://code.google.com/p/googletest/wiki/AdvancedGuide#Private_Class_Members
49
50 TEST(HierarchicalZipWriter, Index)
51 {
52 HierarchicalZipWriter::Index i;
53 ASSERT_EQ("hello", i.OpenFile("hello"));
54 ASSERT_EQ("hello-2", i.OpenFile("hello"));
55 ASSERT_EQ("coucou", i.OpenFile("coucou"));
56 ASSERT_EQ("hello-3", i.OpenFile("hello"));
57
58 i.OpenDirectory("coucou");
59
60 ASSERT_EQ("coucou-2/world", i.OpenFile("world"));
61 ASSERT_EQ("coucou-2/world-2", i.OpenFile("world"));
62
63 i.OpenDirectory("world");
64
65 ASSERT_EQ("coucou-2/world-3/hello", i.OpenFile("hello"));
66 ASSERT_EQ("coucou-2/world-3/hello-2", i.OpenFile("hello"));
67
68 i.CloseDirectory();
69
70 ASSERT_EQ("coucou-2/world-4", i.OpenFile("world"));
71
72 i.CloseDirectory();
73
74 ASSERT_EQ("coucou-3", i.OpenFile("coucou"));
75
76 ASSERT_THROW(i.CloseDirectory(), OrthancException);
77 }
78
79
80 TEST(HierarchicalZipWriter, Filenames)
81 {
82 ASSERT_EQ("trE hell", HierarchicalZipWriter::Index::KeepAlphanumeric(" ÊtrE hellô "));
83
84 // The "^" character is considered as a space in DICOM
85 ASSERT_EQ("Hel lo world", HierarchicalZipWriter::Index::KeepAlphanumeric(" Hel^^ ^\r\n\t^^lo \t <world> "));
86 }
87 }
88
89
90 TEST(HierarchicalZipWriter, Basic)
91 {
92 static const std::string SPACES = " ";
93
94 HierarchicalZipWriter w("hello2.zip");
95
96 w.SetCompressionLevel(0);
97
98 // Inside "/"
99 w.OpenFile("hello");
100 w.Write(SPACES + "hello\n");
101 w.OpenFile("hello");
102 w.Write(SPACES + "hello-2\n");
103 w.OpenDirectory("hello");
104
105 // Inside "/hello-3"
106 w.OpenFile("hello");
107 w.Write(SPACES + "hello\n");
108 w.OpenDirectory("hello");
109
110 w.SetCompressionLevel(9);
111
112 // Inside "/hello-3/hello-2"
113 w.OpenFile("hello");
114 w.Write(SPACES + "hello\n");
115 w.OpenFile("hello");
116 w.Write(SPACES + "hello-2\n");
117 w.CloseDirectory();
118
119 // Inside "/hello-3"
120 w.OpenFile("hello");
121 w.Write(SPACES + "hello-3\n");
122
123 /**
124
125 TO CHECK THE CONTENT OF THE "hello2.zip" FILE:
126
127 # unzip -v hello2.zip
128
129 => There must be 6 files. The first 3 files must have a negative
130 compression ratio.
131
132 **/
133 }