Change id: op-same-key
Implementations | ||||||
Tests | BaseX 8.5 beta XQ31 (QT3 vCVS) |
Saxon-EE 9.7.0.11 XP31 (QT3 v0.6) |
Saxon-EE 9.7.0.11 XQ31 (QT3 v0.6) |
XmlPrime 4.0.0.16079 XP31 (QT3 vCVS) |
XmlPrime 4.0.0.26293 XQ31 (QT3 vCVS) |
XmlPrime 4.0.0.27704 XQX31 (QT3 vCVS) |
---|---|---|---|---|---|---|
same-key-001[+]
X same-key-001: Created on: 2015-07-22 Spec Dependencies: spec = XP31+ XQ31+ XT30+ Test: map:merge(( map:entry(xs:untypedAtomic("abc"), 1), map:entry(xs:string("abc"), 1), map:entry(xs:anyURI("abc"), 1), map:entry(xs:string("xyz"), 1), map:entry(xs:untypedAtomic("xyz"), 1), map:entry(QName((),"abc"), 1) ), map{"duplicates":"use-last"}) |
pass | pass | pass | pass | pass | pass |
same-key-002[+]
X same-key-002: Created on: 2015-07-22 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: declare default collation "http://www.w3.org/2005/xpath-functions/collation/html-ascii-case-insensitive"; let $keys := ("ABC", "abc", "aBc") return [ map:merge($keys ! map:entry(., position())), distinct-values($keys), for $k in $keys group by $k return $k ] |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-003[+]
X same-key-003: Created on: 2015-07-22 Spec Dependencies: spec = XP31+ XQ31+ XT30+ Test: map { "ab" || "c" : 1, xs:anyURI("abc") : 2 } |
pass | pass | pass | pass | pass | pass |
same-key-004[+]
X same-key-004: Created on: 2015-07-22 Spec Dependencies: spec = XP31+ XQ31+ XT30+ Test: map:merge(( map:entry(xs:double('NaN'), 1), map:entry(xs:double('INF'), 2), map:entry(xs:double('-INF'), 3), map:entry(xs:float('NaN'), 1), map:entry(xs:float('INF'), 2), map:entry(xs:float('-INF'), 3) ), map{"duplicates":"use-last"}) |
pass | pass | pass | pass | pass | pass |
same-key-005[+]
X same-key-005: Created on: 2015-07-22 Spec Dependencies: spec = XP31+ XQ31+ XT30+ Test: map:merge(( map:entry(xs:double('NaN'), 1), map:entry(xs:double('INF'), 2), map:entry(xs:double('-INF'), 3), map:entry(xs:float('NaN'), 1), map:entry(xs:float('INF'), 2), map:entry(xs:float('-INF'), 3) ), map{"duplicates":"use-last"}) |
pass | pass | pass | pass | pass | pass |
same-key-006[+]
X same-key-006: Created on: 2015-07-22 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: let $keys := ( xs:decimal("1.00000000000000001"), xs:decimal("1.00000000000000002"), xs:double("1.0") ) return [ map:merge($keys ! map:entry(., position())), distinct-values($keys), for $k in $keys group by $k return $k ] |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-007[+]
X same-key-007: Created on: 2015-07-22 Spec Dependencies: spec = XP31+ XQ31+ XT30+ Test: map { xs:double("1.1") : 1 } |
pass | pass | pass | pass | pass | pass |
same-key-008[+]
X same-key-008: Created on: 2015-07-22 Spec Dependencies: feature = arbitraryPrecisionDecimal spec = XP31+ XQ31+ XT30+ Test: map { 1 div 3 cast as xs:float : "float", 1 div 3 cast as xs:double : "double", 1 div 3 cast as xs:integer : "integer" } |
pass | n/a
Dependency not satisfied |
n/a
Dependency not satisfied |
n/a | n/a | n/a |
same-key-009[+]
X same-key-009: Created on: 2015-07-22 Spec Dependencies: spec = XP31+ XQ31+ XT30+ Test: map { xs:integer("16777218") : 1 } |
pass | pass | pass | pass | pass | pass |
same-key-010[+]
X same-key-010: Created on: 2015-07-22 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: for $i in -100000 to 100000 let $f := xs:float($i) let $m := map { $f : 1 } where not(map:contains($m, $f)) or not(map:contains($m, $f cast as xs:decimal)) return error((), "i=" || $i) |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-011[+]
X same-key-011: Created on: 2015-07-22 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: for $i in -100000 to 100000 let $d := xs:double($i) let $m := map { $d : 1 } where not(map:contains($m, $d)) or not(map:contains($m, $d cast as xs:decimal)) return error((), "i=" || $i) |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-012[+]
X same-key-012: Created on: 2015-07-22 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: for $i in -100000 to 100000 let $m := map { $i : 1 } where not(map:contains($m, $i)) or not(map:contains($m, $i cast as xs:decimal)) return error((), "i=" || $i) |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-013[+]
X same-key-013: Created on: 2015-07-22 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: let $without_tz := xs:dateTime('2015-04-08T01:30:00') let $with_tz := adjust-dateTime-to-timezone($without_tz, implicit-timezone()) let $keys := (xs:dateTime('2015-04-08T02:30:00'), $without_tz, $with_tz) return [ map:merge($keys ! map:entry(., position())), distinct-values($keys), for $k in $keys group by $k return $k ] |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-014[+]
X same-key-014: Created on: 2015-07-22 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: let $without_tz := xs:date('2015-04-08') let $with_tz := adjust-date-to-timezone($without_tz, implicit-timezone()) let $keys := (xs:date('2015-04-09'), $without_tz, $with_tz) return [ map:merge($keys ! map:entry(., position())), distinct-values($keys), for $k in $keys group by $k return $k ] |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-015[+]
X same-key-015: Created on: 2015-07-22 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: let $without_tz := xs:time('01:30:00') let $with_tz := adjust-time-to-timezone($without_tz, implicit-timezone()) let $keys := (xs:time('02:30:00'), $without_tz, $with_tz) return [ map:merge($keys ! map:entry(., position())), distinct-values($keys), for $k in $keys group by $k return $k ] |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-016[+]
X same-key-016: Created on: 2015-07-22 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: let $date := adjust-date-to-timezone(xs:date("2015-10-10"), implicit-timezone()) let $keys := ($date cast as xs:gYear, xs:gYear("2015"), xs:gYear("2014")) return [ map:merge($keys ! map:entry(., position())), distinct-values($keys), for $k in $keys group by $k return $k ] |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-017[+]
X same-key-017: Created on: 2015-07-22 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: let $date := adjust-date-to-timezone(xs:date("2015-10-10"), implicit-timezone()) let $keys := ($date cast as xs:gYearMonth, xs:gYearMonth("2015-10"), xs:gYearMonth("2015-11")) return [ map:merge($keys ! map:entry(., position())), distinct-values($keys), for $k in $keys group by $k return $k ] |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-018[+]
X same-key-018: Created on: 2015-07-22 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: let $date := adjust-date-to-timezone(xs:date("2015-10-10"), implicit-timezone()) let $keys := ($date cast as xs:gMonth, xs:gMonth("--10"), xs:gMonth("--11")) return [ map:merge($keys ! map:entry(., position())), distinct-values($keys), for $k in $keys group by $k return $k ] |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-019[+]
X same-key-019: Created on: 2015-07-22 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: let $date := adjust-date-to-timezone(xs:date("2015-10-10"), implicit-timezone()) let $keys := ($date cast as xs:gMonthDay, xs:gMonthDay("--10-10"), xs:gMonthDay("--11-11")) return [ map:merge($keys ! map:entry(., position())), distinct-values($keys), for $k in $keys group by $k return $k ] |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-020[+]
X same-key-020: Created on: 2015-07-22 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: let $date := adjust-date-to-timezone(xs:date("2015-10-10"), implicit-timezone()) let $keys := ($date cast as xs:gDay, xs:gDay("---10"), xs:gDay("---11")) return [ map:merge($keys ! map:entry(., position())), distinct-values($keys), for $k in $keys group by $k return $k ] |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-021[+]
X same-key-021: Created on: 2015-07-22 Spec Dependencies: spec = XP31+ XQ31+ XT30+ Test: map { fn:true() : 1, fn:false() : 2, xs:hexBinary("ff") : 3, xs:base64Binary(xs:hexBinary("ff")) : 4, xs:duration("P12M") : 5, QName((), "abc") : 6, QName("http://example.org", "abc") : 7 } |
pass | pass | pass | pass | pass | pass |
same-key-022[+]
X same-key-022: Created on: 2015-07-22 Spec Dependencies: spec = XP31+ XQ31+ XT30+ Test: let $ns := "http://example.org", $keys := (QName($ns, "foo"), QName($ns, "ns:foo"), QName($ns, "ns2:foo")) return map:merge($keys ! map:entry(., position()), map{"duplicates":"use-last"}) |
pass | pass | pass | pass | pass | pass |
same-key-023[+]
X same-key-023: Created on: 2016-05-18 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: let $keys := let $range := 48 to 122 for $c1 in $range, $c2 in $range, $c3 in $range return codepoints-to-string(($c1, $c2, $c3)) let $map := map:merge(($keys,$keys) ! map:entry(.,.)) return map:size($map) eq count($keys) and ( every $key in $keys satisfies $map($key) eq $key and not(map:contains(map:remove($map, $key), $key)) and map:get(map:put($map, $key, "x"), $key) eq "x" ) |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-024[+]
X same-key-024: Created on: 2016-05-18 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: let $keys := let $range := 48 to 122 for $c1 in $range, $c2 in $range let $i := $c1*1000 + $c2 return ( codepoints-to-string(($c1, $c2)), switch($i mod 3) case 0 return xs:integer($i) case 1 return xs:decimal($i) case 2 return xs:double($i) default return error() ) let $map := map:merge(($keys,$keys) ! map:entry(.,.), map{"duplicates":"use-last"}) return map:size($map) eq count($keys) and ( every $key in $keys satisfies $map($key) eq $key and not(map:contains(map:remove($map, $key), $key)) and map:get(map:put($map, $key, "x"), $key) eq "x" ) |
pass | n/a
notXP31 |
pass | n/a | pass | pass |
same-key-025[+]
X same-key-025: Created on: 2016-05-18 Spec Dependencies: spec = XQ31+ feature = arbitraryPrecisionDecimal spec = XP31+ XQ31+ XT30+ Test: let $keys := (1 to 10000) ! xs:float(1 div .) let $map := map:merge( $keys ! ( map:entry(.,.), map:entry(-.,-.) ) ) return map:size($map) eq 20000 and ( every $key in $keys satisfies $map($key) eq $key and $map(xs:double($key)) eq $key and $map(xs:decimal($key)) eq $key ) |
pass | n/a
notXP31 |
n/a
Dependency not satisfied |
n/a | n/a | n/a |
same-key-026[+]
X same-key-026: Created on: 2016-05-18 Spec Dependencies: spec = XQ31+ spec = XP31+ XQ31+ XT30+ Test: declare function local:type($n) { if ($n instance of xs:integer) then "integer" else if ($n instance of xs:double) then "double" else if ($n instance of xs:float) then "float" else error() }; let $values := ( xs:integer("9223372036854773760"), xs:double("9.223372036854774E18"), xs:integer("9223372036854773761"), xs:integer("9223372036854774784"), xs:double("9.223372036854775E18"), xs:integer("9223372036854774785"), xs:integer("9223372036854775808"), xs:double("9.223372036854776E18"), xs:float("9.223372E18"), xs:integer("9223372036854775809"), xs:integer("9223372036854777856"), xs:double("9.223372036854778E18") ) let $m := map:merge( for $i in $values return map:entry($i,$i) , map{"duplicates":"use-last"}) let $contents := string-join(for $v at $p in $values return ($p || " $m(" || local:type($v) || ") == " || local:type($m($v))), ", " ) return ("Size: " || map:size($m) || ", " || $contents) |
pass | n/a
notXP31 |
fail
Expected error:FORG0001, got Size: 7, 1 $m(integer) == double, 2 $m(double) == integer, 3 $m(integer) == inte... |
n/a | pass | pass |
same-key-027[+]
X same-key-027: Created on: 2016-07-28 Spec Dependencies: spec = XP31+ XQ31 spec = XP31+ XQ31+ XT30+ Test: map{ xs:time('17:00:00Z'):1, xs:time('12:00:00-05:00'):2 } |
no result | pass | pass | pass | pass | pass |