|
Implementations | ||||||||||||||||
Tests | BaseX 7.7 XQ30 |
EMC/xDB xDB_main_r2411365 XQ30 |
Saxon-EE 9.5.1.1 XP20 |
Saxon-EE 9.5.1.1 XQ10 |
Saxon-EE 9.5.1.1 XP30 |
Saxon-EE 9.5.1.1 XQ30 |
Saxon-EE 9.5.1.4 XQX30 (QT3 v1.1) |
XmlPrime 3.0.0.0 XP30 (QT3 vCVS) |
XmlPrime 3.0.0.0 XQ30 (QT3 vCVS) |
XmlPrime 3.0.0.0 XQX30 (QT3 vCVS) |
XmlPrime 3.0.0.0 XP20 (QT3 vCVS) |
XmlPrime 3.0.0.0 XQX10 (QT3 vCVS) |
XmlPrime 3.0.0.0 XQ10 (QT3 vCVS) |
Zorba 2.9 XQ10 (QT3 vCVS) |
Zorba 2.9 XQ30 (QT3 vCVS) |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
prod-Predicate | 190/190 | 189/190 | 158/158 | 190/190 | 159/159 | 190/190 | 186/190 | 159/159 | 190/190 | 191/190 | 158/158 | 191/190 | 190/190 | 190/190 | 190/190 | 0/15 |
filterexpressionhc1[+]
X filterexpressionhc1: (/works/employee[xs:integer(hours[1]) gt 20]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc2[+]
X filterexpressionhc2: ((1 to 25)[. mod 2 eq 0]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc3[+]
X filterexpressionhc3: ((1 to 25)[25]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc4[+]
X filterexpressionhc4: (//empnum | (/))//employee[xs:integer(hours[1]) gt 20] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc5[+]
X filterexpressionhc5: (//employee[fn:last()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc6[+]
X filterexpressionhc6: ((1 to 25)[. ge 10]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc7[+]
X filterexpressionhc7: ((1 to 25)[. lt 10]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc8[+]
X filterexpressionhc8: ((1 to 25)[. le 10]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc9[+]
X filterexpressionhc9: ((1 to 25)[. eq 10]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc10[+]
X filterexpressionhc10: ((1 to 11)[. ne 10]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc11[+]
X filterexpressionhc11: ((1 to 11)[(. eq 10) and (. mod 5 eq 0)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc12[+]
X filterexpressionhc12: ((1 to 11)[(. eq 10) or (. eq 5)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc13[+]
X filterexpressionhc13: ((1,2,4,5,6,7,8,9,10,11)[(. div 2 eq 5)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc14[+]
X filterexpressionhc14: ((1,2,4,5,6,7,8,9,10,11)[(. * 2 eq 10)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc15[+]
X filterexpressionhc15: ((1,2,4,5,6,7,8,9,10,11)[(. + 2 eq 10)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc16[+]
X filterexpressionhc16: ((1,2,4,5,6,7,8,9,10,11)[(. - 2 eq 6)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc17[+]
X filterexpressionhc17: ((1,2,4,5,6,7,8,9,10,11)[(. idiv 2 eq 3)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc18[+]
X filterexpressionhc18: ((1,2,3,4,5,6,7,8,9,10,11)[(xs:string(.) eq "3")]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc19[+]
X filterexpressionhc19: ((1,2,3,4,5,6,7,8,9,10,11)[. gt 1][. gt 5]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc20[+]
X filterexpressionhc20: ((1,2,3,4,5,6,7,8,9,10,11)[(. gt 1) and (. gt 2)][(. gt 5) and (. gt 6)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc21[+]
X filterexpressionhc21: ((1,2,3,4,5,6,7,8,9,10,11)[fn:true()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
filterexpressionhc22[+]
X filterexpressionhc22: fn:count(((1,2,3,4,5,6,7,8,9,10,11)[fn:false()])) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-1[+]
X K-FilterExpr-1: (1, 2, 3)[ |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-2[+]
X K-FilterExpr-2: (1, 2, 3)] |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-3[+]
X K-FilterExpr-3: (1, 2, 3)[] |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-4[+]
X K-FilterExpr-4: [true()] |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | wrongError
Expected error: XPST0003. Found error: JNTY0011 |
wrongError
Expected error: XPST0003. Found error: JNTY0011 |
|
K-FilterExpr-5[+]
X K-FilterExpr-5: [] |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | wrongError
Expected error: XPST0003. Found error: JNTY0011 |
wrongError
Expected error: XPST0003. Found error: JNTY0011 |
|
K-FilterExpr-6[+]
X K-FilterExpr-6: empty((1, 2, 3)[0]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-7[+]
X K-FilterExpr-7: empty((1, 2, 3)[4]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-8[+]
X K-FilterExpr-8: empty((1, 2, 3)[0]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-9[+]
X K-FilterExpr-9: empty((1, 2, 3)[4]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-10[+]
X K-FilterExpr-10: empty((1, 2, 3)[0.1]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-11[+]
X K-FilterExpr-11: empty((1, 2, 3)[1.1]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-12[+]
X K-FilterExpr-12: empty((1, 2, 3)[1.01]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-13[+]
X K-FilterExpr-13: empty((1, 2, 3)[4]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-14[+]
X K-FilterExpr-14: empty((1, 2, 3)[4.1]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-15[+]
X K-FilterExpr-15: empty((1, 2, 3)[4.01]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-16[+]
X K-FilterExpr-16: not(empty((1, 2, 3)[1])) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-17[+]
X K-FilterExpr-17: not(empty((1, 2, 3)[3])) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-18[+]
X K-FilterExpr-18: (1, 2, 3)[1] eq 1 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-19[+]
X K-FilterExpr-19: (1, 2, 3)[1.0] eq 1 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-20[+]
X K-FilterExpr-20: (1, 2, 3)[1.0e0] eq 1 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-21[+]
X K-FilterExpr-21: (1, 2, 3)[3] eq 3 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-22[+]
X K-FilterExpr-22: (1, 2, 3)[3.0] eq 3 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-23[+]
X K-FilterExpr-23: (1, 2, 3)[3.0e0] eq 3 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-24[+]
X K-FilterExpr-24: (0, 1, 2)[1] eq 0 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-25[+]
X K-FilterExpr-25: (0, 1, 2)[2] eq 1 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-26[+]
X K-FilterExpr-26: (0, 1, 2)[3] eq 2 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-27[+]
X K-FilterExpr-27: (0)[1] eq 0 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-28[+]
X K-FilterExpr-28: 0[1] eq 0 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-29[+]
X K-FilterExpr-29: (0, 1)[1] eq 0 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-30[+]
X K-FilterExpr-30: empty((1, 2, 3)[false()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-31[+]
X K-FilterExpr-31: deep-equal((1, 2, 3), (1, 2, 3)[true()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-32[+]
X K-FilterExpr-32: deep-equal((1, 2, 3), (1, 2, 3)[. instance of xs:integer]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-33[+]
X K-FilterExpr-33: deep-equal((true(), true(), true()), (false(), true(), true(), false(), true(), false())[.]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-34[+]
X K-FilterExpr-34: deep-equal((2, 3, 4, 5, 7, 8, 9), (0, 2, 3, 4, 5, 5, 7, 8, 10 - 1)[.]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-35[+]
X K-FilterExpr-35: 1[true()] eq 1 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-36[+]
X K-FilterExpr-36: (1, current-time())[1] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-37[+]
X K-FilterExpr-37: deep-equal((1, 2, 3), (1, 2, 3)[xs:anyURI("example.com/")]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-38[+]
X K-FilterExpr-38: (1, 2, 3)[(xs:anyURI("example.com/"), xs:anyURI("example.com/"))] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-39[+]
X K-FilterExpr-39: deep-equal((1, 2, 3), (1, 2, 3)[xs:untypedAtomic("content")]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-40[+]
X K-FilterExpr-40: (1, 2, 3)[(xs:untypedAtomic("content"), xs:untypedAtomic("content"))] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-41[+]
X K-FilterExpr-41: (0, 1, 2)[true()][1] eq 0 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-42[+]
X K-FilterExpr-42: (1, 2, 3)[position() eq 2 or position() eq 3][2] eq 3 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-43[+]
X K-FilterExpr-43: empty((1, 2, 3)[position() eq 2 or position() eq 3][3]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-44[+]
X K-FilterExpr-44: deep-equal((1, 2, 3), (1, 2, 3)[2 or 3]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-45[+]
X K-FilterExpr-45: empty((1, 2, 3)[3][2]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-46[+]
X K-FilterExpr-46: empty((1, 2, 3)[3][0]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-47[+]
X K-FilterExpr-47: (0, 2, 4, 5)[1][1][1][true()][1][true()][1] eq 0 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-48[+]
X K-FilterExpr-48: empty((1, 2, 3)[3e8]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-49[+]
X K-FilterExpr-49: empty((0, 1, 2)[false()][1]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-50[+]
X K-FilterExpr-50: deep-equal(("a", "b", "c"), (0, 1, 2, "a", "b", "c")[. instance of xs:string]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-51[+]
X K-FilterExpr-51: ((0, 1, 2, "a", "b", "c")[. instance of xs:string][. treat as xs:string eq "c"] treat as xs:string) eq "c" |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-52[+]
X K-FilterExpr-52: ((0, 1, 2, "a", "b", "c")[. instance of xs:integer][. treat as xs:integer eq 0] treat as xs:integer) eq 0 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-53[+]
X K-FilterExpr-53: (0, 1, 2, "a", "b", "c")[. instance of xs:integer][. eq "c"] eq 0 |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-54[+]
X K-FilterExpr-54: empty(()[()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-55[+]
X K-FilterExpr-55: empty((1, 2, 3)[()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-56[+]
X K-FilterExpr-56: empty(()[last()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-57[+]
X K-FilterExpr-57: empty(()[1]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-58[+]
X K-FilterExpr-58: empty(()[position()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-59[+]
X K-FilterExpr-59: empty(()[count(remove((current-time(), 1), 1)) eq 1]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-60[+]
X K-FilterExpr-60: deep-equal((1, 2, 3), (1, 2, 3)[position() >= 1]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-61[+]
X K-FilterExpr-61: deep-equal((1, 2, 3), (1, 2, 3)[3 >= position()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-62[+]
X K-FilterExpr-62: deep-equal((1, 2, 3), (1, 2, 3)[position() ge 1]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-63[+]
X K-FilterExpr-63: deep-equal((1, 2, 3), (1, 2, 3)[3 ge position()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-64[+]
X K-FilterExpr-64: deep-equal((0, 1, 2), (0, 1, 2)[position() eq position()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-65[+]
X K-FilterExpr-65: deep-equal((0, 1, 2), (0, 1, 2)[position() = position()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-66[+]
X K-FilterExpr-66: (0, 1, 2)[1 eq position()] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-67[+]
X K-FilterExpr-67: (0, 1, 2)[3 eq position()] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-68[+]
X K-FilterExpr-68: (0, 1, 2)[position() eq 3] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-69[+]
X K-FilterExpr-69: deep-equal((1, 2, 3), (1, 2, 3)[number(.)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-70[+]
X K-FilterExpr-70: deep-equal((1, 2), (0, 1, 2)[if(. eq 1) then 2 else 3]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-71[+]
X K-FilterExpr-71: deep-equal((0, 1, 2), (0, 1, 2)[if(. eq 8) then "str" else position()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-72[+]
X K-FilterExpr-72: deep-equal((0, 1, 2), (0, 1, 2)[if(. eq 8) then 0 else position()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-73[+]
X K-FilterExpr-73: (0, 1, 2)[last()] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-74[+]
X K-FilterExpr-74: (0, 1, "2")[last()] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-75[+]
X K-FilterExpr-75: 2 eq (0, 1, "2")[last()] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-76[+]
X K-FilterExpr-76: empty((())[last()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-77[+]
X K-FilterExpr-77: empty(()[last()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-78[+]
X K-FilterExpr-78: (0, 1, 2)[. eq 0] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-79[+]
X K-FilterExpr-79: (0, 1, 2)[. eq 1] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-80[+]
X K-FilterExpr-80: (0, 1, 2)[. eq 2] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-81[+]
X K-FilterExpr-81: deep-equal((0, 1, 2), (0, 1, 2)[. eq 0 or . eq 1 or . eq 2]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-82[+]
X K-FilterExpr-82: (0, 1, 2)[remove((1, "a string"), 2)] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-83[+]
X K-FilterExpr-83: deep-equal((1, 2), (1, 2)[remove((true(), "a string"), 2)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-84[+]
X K-FilterExpr-84: empty((1, 2, 3)[remove((false(), "a string"), 2)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-85[+]
X K-FilterExpr-85: empty((1, 2, 3)[remove((false(), "a string"), 2)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-86[+]
X K-FilterExpr-86: empty(current-time()[2]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-87[+]
X K-FilterExpr-87: empty((1, 2, 3, current-time())[0]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-88[+]
X K-FilterExpr-88: empty(remove((1, 2, 3, current-time()), 4)[false()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-89[+]
X K-FilterExpr-89: deep-equal(remove((1, 2, 3, current-time()), 4)[true()], (1, 2, 3)) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-90[+]
X K-FilterExpr-90: (1, 2, 3)[(last(), last())[2]] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-91[+]
X K-FilterExpr-91: (1, 2, 3)[xs:hexBinary("FF")] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-92[+]
X K-FilterExpr-92: (1, 2, 3)[1, 2] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-93[+]
X K-FilterExpr-93: (1, 2, 3)[1, "a string"] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K-FilterExpr-94[+]
X K-FilterExpr-94: (1, 2, 3)["a string", 1] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-FilterExpr-1[+]
X K2-FilterExpr-1: declare variable $var := (for $i in 1 to 100 return <e>{$i}</e>); $var[last()] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-FilterExpr-2[+]
X K2-FilterExpr-2: declare variable $var := (for $i in 1 to 100 return <e>{$i}</e>); $var[5] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-FilterExpr-3[+]
X K2-FilterExpr-3: empty((1,2,3,4,5)[3.4]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-FilterExpr-4[+]
X K2-FilterExpr-4: empty(<e><a/></e>//a[3.4]) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-FilterExpr-5[+]
X K2-FilterExpr-5: let $d := document {<root><child type=""/></root>} return $d//*[let $i := @type return $d//*[$i]], (1, 2, 3)[true()], (4, 5, 6)[false()] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-FilterExpr-6[+]
X K2-FilterExpr-6: let $d := document { <root><child type=""/></root> } return $d//*[let $i := @type return $d//*[$i]] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-FilterExpr-7[+]
X K2-FilterExpr-7: (<x/>, <?y?>)[self::processing-instruction()] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-FilterExpr-8[+]
X K2-FilterExpr-8: (<?z?>, <?y?>)[self::processing-instruction(y)] treat as empty-sequence() |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
predicates-1[+]
X predicates-1: (//integer[fn:true()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-2[+]
X predicates-2: fn:count((//integer[fn:false()])) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-3[+]
X predicates-3: (//integer[fn:not(fn:false())]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-4[+]
X predicates-4: (//integer[fn:true() and fn:true()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-5[+]
X predicates-5: (//integer[fn:true() or fn:true()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-6[+]
X predicates-6: fn:count((//integer[fn:false() and fn:false()])) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-7[+]
X predicates-7: fn:count((//integer[fn:false() or fn:false()])) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-8[+]
X predicates-8: (/root/string[xs:string(.) = "A String Function"]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-9[+]
X predicates-9: (/root/integer[xs:integer(.) = 12678967543233]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-10[+]
X predicates-10: (/root/decimal[xs:decimal(.) = 12678967.543233]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-11[+]
X predicates-11: (/root/float[xs:float(.) = xs:float(1267.43233E12)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-12[+]
X predicates-12: (/root/double[xs:double(.) = 1267.43233E12]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-13[+]
X predicates-13: (/root/boolean[xs:boolean(.) = fn:true()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-14[+]
X predicates-14: (/root/date[xs:date(.) = xs:date("2000-01-01+05:00")]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-17[+]
X predicates-17: (/works/employee[@name="Jane Doe 11"]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-18[+]
X predicates-18: (/works//day[xs:string(.) ne "Monday"]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-19[+]
X predicates-19: (/works//hours[xs:integer(.) lt 13]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-20[+]
X predicates-20: (/works//hours[xs:integer(.) le 12]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-21[+]
X predicates-21: (/works//hours[xs:integer(.) gt 79]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-22[+]
X predicates-22: (/works//hours[xs:integer(.) ge 80]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-23[+]
X predicates-23: (/works//hours[xs:integer(.) = 12]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-24[+]
X predicates-24: (/works[1]//employee[empnum != "E1" and empnum != "E4"]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-25[+]
X predicates-25: (/works//hours[xs:integer(.) < 13]) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
predicates-26[+]
X predicates-26: (/works//hours[xs:integer(.) <= 12]) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
predicates-27[+]
X predicates-27: (/works//hours[xs:integer(.) > 79]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-28[+]
X predicates-28: (/works//hours[xs:integer(.) >= 80]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-29[+]
X predicates-29: let $foo := <element1><element2>some content</element2></element1> return $foo[(2 to 5)] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
predicates-30[+]
X predicates-30: for $x in /works/employee[fn:position() lt 5][fn:position() mod 2 eq 1] return (fn:data($x/empnum), fn:data($x/pnum)) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicates-31[+]
X predicates-31: for $x in /works/employee[fn:position() mod 2 eq 1][fn:position() lt 5] return (fn:data($x/empnum), fn:data($x/pnum)) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicatesns-1[+]
X predicatesns-1: fn:count((//integer[fn:true()])) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicatesns-2[+]
X predicatesns-2: fn:count((//integer[fn:false()])) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicatesns-3[+]
X predicatesns-3: (//integer[fn:not(fn:false())]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicatesns-4[+]
X predicatesns-4: (//integer[fn:true() and fn:true()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicatesns-5[+]
X predicatesns-5: (//integer[fn:true() or fn:true()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicatesns-6[+]
X predicatesns-6: fn:count((//integer[fn:false() and fn:false()])) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicatesns-7[+]
X predicatesns-7: fn:count((//integer[fn:false() or fn:false()])) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicatesns-8[+]
X predicatesns-8: (/root/string[xs:string(.) = "A String Function"]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicatesns-9[+]
X predicatesns-9: (/root/integer[xs:integer(.) = 12678967543233]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicatesns-10[+]
X predicatesns-10: (/root/decimal[(xs:decimal(.) = 12678967.543233)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicatesns-11[+]
X predicatesns-11: (/root/float[xs:float(.) = xs:float(1267.43233E12)]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicatesns-12[+]
X predicatesns-12: (/root/double[xs:double(.) = 1267.43233E12]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicatesns-13[+]
X predicatesns-13: (/root/boolean[xs:boolean(.) = fn:true()]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
predicatesns-14[+]
X predicatesns-14: (/root/date[xs:date(.) = xs:date("2000-01-01+05:00")]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Predicates-1[+]
X K2-Predicates-1: "c"[. treat as xs:string] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Predicates-2[+]
X K2-Predicates-2: declare variable $myvar := <elem> <a/> <b/> <c/></elem>; $myvar/*[last()] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Predicates-3[+]
X K2-Predicates-3: declare variable $myvar := <elem> <a/> <b/> <c/></elem>; $myvar/*[last() - 1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Predicates-4[+]
X K2-Predicates-4: declare variable $myvar := <elem> <a/> <b/> <c/></elem>; $myvar/*[1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Predicates-5[+]
X K2-Predicates-5: (<a/>, <b/>, <c/>)[1][1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Predicates-6[+]
X K2-Predicates-6: <b attr="f"/>[1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Predicates-7[+]
X K2-Predicates-7: <r>{<e xml:lang="ene"/>/(ancestor-or-self::*/@xml:lang)[last()]}</r> |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Predicates-8[+]
X K2-Predicates-8: declare function local:foo($arg as item()) { $arg[@arg] }; local:foo(<e arg="">result</e>) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Predicates-9[+]
X K2-Predicates-9: declare function local:foo($arg as item()) { string($arg/@arg) }; local:foo(<e arg="result"/>) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-filterexpr-001[+]
X cbcl-filterexpr-001: declare function local:nan() { xs:float("NaN") }; (1 to 10)[not(position() < xs:float("NaN"))] |
pass | fail | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-first-in-sequence-001[+]
X cbcl-first-in-sequence-001: declare function local:generate($arg as xs:integer?) { if ($arg = 0) then (1, 2, 3) else () }; ( local:generate(0), 1, local:generate(0) )[1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-first-in-sequence-002[+]
X cbcl-first-in-sequence-002: declare function local:generate($arg as xs:integer?) as xs:integer* { if ($arg = 0) then (1, 2, 3) else $arg }; ( local:generate(()), for $x in local:generate(0) return $x + 2 )[1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-first-in-sequence-003[+]
X cbcl-first-in-sequence-003: declare function local:generate($arg as xs:integer?) as xs:integer? { if ($arg = 0) then 0 else () }; ( local:generate(()), for $x in local:generate(0) return $x + 2 )[1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-first-in-sequence-004[+]
X cbcl-first-in-sequence-004: declare function local:generate($arg as xs:integer?) as xs:integer* { if ($arg = 0) then ( 1, 2, 3 ) else ( $arg ) }; ( local:generate(()), for $x at $p in local:generate(0) return $p + $x)[1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-first-in-sequence-005[+]
X cbcl-first-in-sequence-005: declare function local:generate($arg as xs:integer?) as xs:integer? { if ($arg = 0) then 1 else $arg }; ( local:generate(()), for $x at $p in local:generate(0) return $p + $x)[1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-first-in-sequence-006[+]
X cbcl-first-in-sequence-006: declare function local:generate($arg as xs:integer?) as xs:string* { if ($arg = 0) then ('a', 'b', 'c') else ('d' ) }; ( if (local:generate(1) = 'd') then () else 1, for $x in local:generate(0) return fn:lower-case($x))[1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-first-in-sequence-007[+]
X cbcl-first-in-sequence-007: declare function local:generate($arg as xs:integer?) as xs:integer? { $arg }; ( if (local:generate(0) = 0) then () else 1, for $x in local:generate(0) return -$x)[1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-first-in-sequence-008[+]
X cbcl-first-in-sequence-008: ( (<a><b>cheese</b></a>)/b )[1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-first-in-sequence-009[+]
X cbcl-first-in-sequence-009: declare function local:generate($arg as xs:integer?) as xs:string* { if ($arg = 0) then ('a', 'b', 'c') else () }; ( local:generate(()), for $x in local:generate(0) return 3)[1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-first-in-sequence-010[+]
X cbcl-first-in-sequence-010: declare function local:generate($arg as xs:integer?) as xs:string* { if ($arg = 0) then ('a', 'b', 'c') else () }; boolean(local:generate(0)[1]) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-first-in-sequence-011[+]
X cbcl-first-in-sequence-011: declare function local:generate($arg as xs:integer?) as xs:string* { if ($arg = 0) then ('a', 'b', 'c') else () }; boolean(local:generate(1)[1]) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-first-in-sequence-012[+]
X cbcl-first-in-sequence-012: declare function local:generate($arg as xs:boolean) as xs:string+ { if ($arg) then ('a', 'b', 'c') else ('A', 'B', 'C') }; ( for $x in local:generate(true()) return 3)[1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-filter-001[+]
X cbcl-filter-001: let $x := exists((1 to 10)[. mod 2 = 0]) return (1 to 100)[position() mod 2 = 0 and position() mod 3 = 0 and $x] |
pass | pass | pass | n/a
notXP20 |
pass | pass | pass | pass | pass | pass | n/a | pass | pass | pass | pass |