Mercurial > hg > orthanc
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 } |