Skip to content

Commit 7c8357f

Browse files
authored
Merge pull request #35 from marklogic-community/helper-improvements
better error reporting; added helpers
2 parents eb77f79 + 4b2ab3d commit 7c8357f

File tree

1 file changed

+43
-3
lines changed

1 file changed

+43
-3
lines changed

ml-unit-test-modules/src/main/ml-modules/root/test/test-helper.xqy

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,15 @@ declare function helper:assert-equal-json-recursive($object1, $object2) as xs:bo
363363
typeswitch($object1)
364364
case map:map return
365365
let $k1 := map:keys($object1)
366-
let $k2 := map:keys($object2)
366+
let $k2 :=
367+
if ($object2 instance of map:map) then
368+
map:keys($object2)
369+
else
370+
fn:error(
371+
xs:QName("ASSERT-EQUAL-JSON-FAILED"),
372+
"Assert Equal Json failed: comparing map to non-map",
373+
($object1, $object2)
374+
)
367375
let $counts-equal := fn:count($k1) eq fn:count($k2)
368376
let $maps-equal :=
369377
for $key in map:keys($object1)
@@ -376,15 +384,31 @@ declare function helper:assert-equal-json-recursive($object1, $object2) as xs:bo
376384
let $counts-equal := fn:count($object1) = fn:count($object2)
377385
let $items-equal :=
378386
let $o1 := json:array-values($object1)
379-
let $o2 := json:array-values($object2)
387+
let $o2 :=
388+
if ($object2 instance of json:array) then
389+
json:array-values($object2)
390+
else
391+
fn:error(
392+
xs:QName("ASSERT-EQUAL-JSON-FAILED"),
393+
"Assert Equal JSON failed: comparing json:array to non-array",
394+
($object1, $object2)
395+
)
380396
for $item at $i in $o1
381397
return
382398
helper:assert-equal-json-recursive($item, $o2[$i])
383399
return
384400
$counts-equal and fn:not($items-equal = fn:false())
385401
case object-node() return
386402
let $m1 := fn:data($object1)
387-
let $m2 := fn:data($object2)
403+
let $m2 :=
404+
if ($object2 instance of object-node()) then
405+
fn:data($object2)
406+
else
407+
fn:error(
408+
xs:QName("ASSERT-EQUAL-JSON-FAILED"),
409+
"Assert Equal JSON failed: comparing object-node to non-object-node",
410+
($object1, $object2)
411+
)
388412
let $k1 := map:keys($m1)
389413
let $k2 := map:keys($m2)
390414
let $counts-equal := fn:count($k1) eq fn:count($k2)
@@ -657,3 +681,19 @@ declare function helper:remove-modules-directories($dirs as xs:string*)
657681
</options>)
658682
else ()
659683
};
684+
685+
(: unquote text and get the actual doc content, but without tabs and newlines. convenience function. :)
686+
declare function helper:unquote($doc-text as xs:string)
687+
as document-node()
688+
{
689+
let $doc := fn:head(xdmp:unquote($doc-text))
690+
return helper:strip-blanks($doc)
691+
};
692+
693+
declare function helper:strip-blanks($n as node()) {
694+
typeswitch($n)
695+
case document-node() return document{$n/node() ! helper:strip-blanks(.)}
696+
case element() return element{node-name($n)} {$n/@*, $n/node() ! helper:strip-blanks(.)}
697+
case text() return if (fn:normalize-space($n) eq '') then () else $n
698+
default return $n
699+
};

0 commit comments

Comments
 (0)