Skip to content

Commit 664de51

Browse files
committed
[test] add tests for file:serialize and file:serialize-binary
The test include one that sets the newly added option to insert a final newline.
1 parent c570290 commit 664de51

File tree

2 files changed

+160
-26
lines changed

2 files changed

+160
-26
lines changed

extensions/modules/file/src/test/xquery/modules/file/serialize.xqm

Lines changed: 112 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -23,40 +23,126 @@ xquery version "3.1";
2323

2424
module namespace serialize="http://exist-db.org/testsuite/modules/file/serialize";
2525

26-
import module namespace test="http://exist-db.org/xquery/xqsuite" at "resource:org/exist/xquery/lib/xqsuite/xqsuite.xql";
2726
import module namespace file="http://exist-db.org/xquery/file";
27+
import module namespace helper="http://exist-db.org/xquery/test/util/helper" at "resource:util/helper.xqm";
28+
import module namespace fixtures="http://exist-db.org/xquery/test/util/fixtures" at "resource:util/fixtures.xqm";
29+
30+
31+
declare namespace test="http://exist-db.org/xquery/xqsuite";
32+
33+
34+
declare variable $serialize:suite := "serialize";
35+
declare variable $serialize:text := <node>data</node>;
36+
declare variable $serialize:xml := <root>
37+
<unary attribute="value" />
38+
<nested>
39+
text
40+
</nested>
41+
</root>;
2842

2943

3044
declare
31-
%test:pending("need to mechanism to setup a temporary file to work with")
32-
%test:assertEquals("datadata", "true", "true", "true")
45+
%test:tearDown
46+
function serialize:tear-down() as empty-sequence() {
47+
helper:clear-suite-fs($serialize:suite)
48+
};
49+
50+
declare
51+
%test:assertEquals("datamoredata")
3352
function serialize:append() {
53+
let $directory := helper:get-test-directory($serialize:suite)
54+
let $_ := file:mkdirs($directory)
55+
56+
let $path := $directory || "/append-test.txt"
3457

35-
let $node-set := text {"data"}
36-
let $path := system:get-exist-home() || "/test.txt"
37-
let $parameters := ()
38-
let $append := true()
39-
let $remove := file:delete($path)
40-
let $ser1 := file:serialize($node-set, $path, (), false())
41-
let $ser2 := file:serialize($node-set, $path, (), true())
42-
let $read := file:read($path)
43-
let $remove := file:delete($path)
44-
return ($read, $ser1, $ser2, $remove)
58+
let $_ := file:serialize-binary(xs:base64Binary("data"), $path)
59+
let $_ := file:serialize-binary(xs:base64Binary("moredata"), $path, true())
60+
61+
return file:read-binary($path) => xs:string()
4562
};
4663

4764
declare
48-
%test:pending("need to mechanism to setup a temporary file to work with")
49-
%test:assertEquals("data", "true", "true", "true")
65+
%test:assertEquals("moredata")
5066
function serialize:overwrite() {
67+
let $directory := helper:get-test-directory($serialize:suite)
68+
let $_ := file:mkdirs($directory)
69+
70+
let $path := $directory || "/overwrite-test.txt"
71+
let $_ := file:serialize-binary(xs:base64Binary("data"), $path)
72+
let $_ := file:serialize-binary(xs:base64Binary("moredata"), $path, false())
73+
74+
return file:read-binary($path) => xs:string()
75+
};
76+
77+
declare
78+
%test:assertEquals("<node>data</node>")
79+
function serialize:serialize3() {
80+
let $directory := helper:get-test-directory($serialize:suite)
81+
let $_ := file:mkdirs($directory)
82+
83+
let $path := $directory || "/serialize-3-test.txt"
84+
let $_ := file:serialize($serialize:text, $path, ())
85+
let $_ := file:serialize($serialize:text, $path, ())
86+
87+
return file:read($path)
88+
};
89+
90+
declare
91+
%test:assertTrue
92+
function serialize:xml-defaults() {
93+
let $directory := helper:get-test-directory($serialize:suite)
94+
let $_ := file:mkdirs($directory)
95+
96+
let $path := $directory || "/xml-defaults-test.xml"
97+
let $_ := file:serialize($serialize:xml, $path, ())
98+
99+
return file:read($path) eq
100+
"<root>" || $fixtures:NL ||
101+
" <unary attribute=""value""/>" || $fixtures:NL ||
102+
" <nested>" || $fixtures:NL ||
103+
" text" || $fixtures:NL ||
104+
" </nested>" || $fixtures:NL ||
105+
"</root>"
106+
};
107+
108+
declare
109+
%test:assertTrue
110+
function serialize:xml-final-newline() {
111+
let $directory := helper:get-test-directory($serialize:suite)
112+
let $_ := file:mkdirs($directory)
113+
114+
let $path := $directory || "/xml-final-newline.xml"
115+
let $_ := file:serialize($serialize:xml, $path,
116+
<output:serialization-parameters
117+
xmlns:output="http://www.w3.org/2010/xslt-xquery-serialization">
118+
<exist:insert-final-newline value="yes" />
119+
</output:serialization-parameters>)
120+
121+
return file:read($path) eq
122+
"<root>" || $fixtures:NL ||
123+
" <unary attribute=""value""/>" || $fixtures:NL ||
124+
" <nested>" || $fixtures:NL ||
125+
" text" || $fixtures:NL ||
126+
" </nested>" || $fixtures:NL ||
127+
"</root>" || $fixtures:NL
128+
};
129+
130+
declare
131+
%test:assertTrue
132+
function serialize:xml-minified() {
133+
let $directory := helper:get-test-directory($serialize:suite)
134+
let $_ := file:mkdirs($directory)
135+
136+
let $path := $directory || "/xml-minified.xml"
137+
let $_ := file:serialize($serialize:xml, $path,
138+
<output:serialization-parameters
139+
xmlns:output="http://www.w3.org/2010/xslt-xquery-serialization">
140+
<output:indent value="no"/>
141+
</output:serialization-parameters>)
142+
143+
return file:read($path) eq
144+
"<root><unary attribute=""value""/><nested>" || $fixtures:NL ||
145+
" text" || $fixtures:NL ||
146+
" </nested></root>"
147+
};
51148

52-
let $node-set := text {"data"}
53-
let $path := system:get-exist-home() || "/test.txt"
54-
let $parameters := ()
55-
let $append := true()
56-
let $remove := file:delete($path)
57-
let $ser1 := file:serialize($node-set, $path, (), false())
58-
let $ser2 := file:serialize($node-set, $path, (), false())
59-
let $read := file:read($path)
60-
let $remove := file:delete($path)
61-
return ($read, $ser1, $ser2, $remove)
62-
};

extensions/modules/file/src/test/xquery/modules/file/sync-serialize.xqm

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,3 +199,51 @@ function syse:unindented-no-declaration() {
199199
)
200200
)
201201
};
202+
203+
declare
204+
%test:assertEquals("true", "true")
205+
function syse:insert-final-newline-yes() {
206+
let $directory := helper:get-test-directory($syse:suite)
207+
let $sync := file:sync(
208+
$fixtures:collection,
209+
$directory,
210+
map{ "exist:insert-final-newline": true() }
211+
)
212+
213+
return (
214+
helper:assert-file-contents(
215+
$fixtures:XML_DECLARATION || $fixtures:NL ||
216+
$fixtures:SIMPLE_XML_INDENTED || $fixtures:NL,
217+
($directory, $syse:simple-file-name)
218+
),
219+
helper:assert-file-contents(
220+
$fixtures:XML_DECLARATION || $fixtures:NL ||
221+
$fixtures:COMPLEX_XML_INDENTED || $fixtures:NL,
222+
($directory, $syse:complex-file-name)
223+
)
224+
)
225+
};
226+
227+
declare
228+
%test:assertEquals("true", "true")
229+
function syse:insert-final-newline-no() {
230+
let $directory := helper:get-test-directory($syse:suite)
231+
let $sync := file:sync(
232+
$fixtures:collection,
233+
$directory,
234+
map{ "exist:insert-final-newline": false() }
235+
)
236+
237+
return (
238+
helper:assert-file-contents(
239+
$fixtures:XML_DECLARATION || $fixtures:NL ||
240+
$fixtures:SIMPLE_XML_INDENTED,
241+
($directory, $syse:simple-file-name)
242+
),
243+
helper:assert-file-contents(
244+
$fixtures:XML_DECLARATION || $fixtures:NL ||
245+
$fixtures:COMPLEX_XML_INDENTED,
246+
($directory, $syse:complex-file-name)
247+
)
248+
)
249+
};

0 commit comments

Comments
 (0)