default.yaml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. desc: Tests r.default
  2. tests:
  3. - cd: r.expr(1).default(2)
  4. ot: 1
  5. - cd: r.expr(null).default(2)
  6. ot: 2
  7. - cd: r.expr({})['b'].default(2)
  8. js: r.expr({})('b').default(2)
  9. ot: 2
  10. - cd: r.expr(r.expr('a')['b']).default(2)
  11. js: r.expr(r.expr('a')('b')).default(2)
  12. ot: err("ReqlQueryLogicError", "Cannot perform bracket on a non-object non-sequence `\"a\"`.", [])
  13. - rb: r.expr([]).reduce{|a,b| a+b}.default(2)
  14. py: r.expr([]).reduce(lambda a,b:a+b).default(2)
  15. js: r.expr([]).reduce(function(a,b){return a+b}).default(2)
  16. ot: 2
  17. - rb: r.expr([]).union([]).reduce{|a,b| a+b}.default(2)
  18. py: r.expr([]).union([]).reduce(lambda a,b:a+b).default(2)
  19. js: r.expr([]).union([]).reduce(function(a,b){return a+b}).default(2)
  20. ot: 2
  21. - rb: r.expr('a').reduce{|a,b| a+b}.default(2)
  22. py: r.expr('a').reduce(lambda a,b:a+b).default(2)
  23. js: r.expr('a').reduce(function(a,b){return a+b}).default(2)
  24. ot: err("ReqlQueryLogicError", "Cannot convert STRING to SEQUENCE", [])
  25. - cd: (r.expr(null) + 5).default(2)
  26. js: (r.expr(null).add(5)).default(2)
  27. ot: 2
  28. - cd: (5 + r.expr(null)).default(2)
  29. js: (r.expr(5).add(null)).default(2)
  30. ot: 2
  31. - cd: (5 - r.expr(null)).default(2)
  32. js: (r.expr(5).sub(null)).default(2)
  33. ot: 2
  34. - cd: (r.expr(null) - 5).default(2)
  35. js: (r.expr(null).sub(5)).default(2)
  36. ot: 2
  37. - cd: (r.expr('a') + 5).default(2)
  38. js: (r.expr('a').add(5)).default(2)
  39. ot: err("ReqlQueryLogicError", "Expected type STRING but found NUMBER.", [])
  40. - cd: (5 + r.expr('a')).default(2)
  41. js: (r.expr(5).add('a')).default(2)
  42. ot: err("ReqlQueryLogicError", "Expected type NUMBER but found STRING.", [])
  43. - cd: (r.expr('a') - 5).default(2)
  44. js: (r.expr('a').sub(5)).default(2)
  45. ot: err("ReqlQueryLogicError", "Expected type NUMBER but found STRING.", [])
  46. - cd: (5 - r.expr('a')).default(2)
  47. js: (r.expr(5).sub('a')).default(2)
  48. ot: err("ReqlQueryLogicError", "Expected type NUMBER but found STRING.", [])
  49. - cd: r.expr(1).default(r.error())
  50. ot: 1
  51. - cd: r.expr(null).default(r.error())
  52. ot: (null)
  53. - cd: r.expr({})['b'].default(r.error())
  54. js: r.expr({})('b').default(r.error())
  55. ot: err("ReqlNonExistenceError", "No attribute `b` in object:", [])
  56. - rb: r.expr([]).reduce{|a,b| a+b}.default(r.error)
  57. py: r.expr([]).reduce(lambda a,b:a+b).default(r.error)
  58. js: r.expr([]).reduce(function(a,b){return a+b}).default(r.error)
  59. ot: err("ReqlNonExistenceError", "Cannot reduce over an empty stream.", [])
  60. - rb: r.expr([]).union([]).reduce{|a,b| a+b}.default(r.error)
  61. py: r.expr([]).union([]).reduce(lambda a,b:a+b).default(r.error)
  62. js: r.expr([]).union([]).reduce(function(a,b){return a+b}).default(r.error)
  63. ot: err("ReqlNonExistenceError", "Cannot reduce over an empty stream.", [])
  64. - cd: (r.expr(null) + 5).default(r.error)
  65. js: (r.expr(null).add(5)).default(r.error)
  66. ot: err("ReqlNonExistenceError", "Expected type NUMBER but found NULL.", [])
  67. - cd: (5 + r.expr(null)).default(r.error)
  68. js: (r.expr(5).add(null)).default(r.error)
  69. ot: err("ReqlNonExistenceError", "Expected type NUMBER but found NULL.", [])
  70. - cd: (5 - r.expr(null)).default(r.error)
  71. js: (r.expr(5).sub(null)).default(r.error)
  72. ot: err("ReqlNonExistenceError", "Expected type NUMBER but found NULL.", [])
  73. - cd: (r.expr(null) - 5).default(r.error)
  74. js: (r.expr(null).sub(5)).default(r.error)
  75. ot: err("ReqlNonExistenceError", "Expected type NUMBER but found NULL.", [])
  76. - rb: r.expr(1).default{|e| e}
  77. py: r.expr(1).default(lambda e:e)
  78. js: r.expr(1).default(function(e){return e})
  79. ot: 1
  80. - cd: r.expr(null).default{|e| e}
  81. py: r.expr(null).default(lambda e:e)
  82. js: r.expr(null).default(function(e){return e})
  83. ot: (null)
  84. - cd: r.expr({})['b'].default{|e| e}
  85. py: r.expr({})['b'].default(lambda e:e)
  86. js: r.expr({})('b').default(function(e){return e})
  87. ot: "No attribute `b` in object:\n{}"
  88. - cd: r.expr([]).reduce{|a,b| a+b}.default{|e| e}
  89. py: r.expr([]).reduce(lambda a,b:a+b).default(lambda e:e)
  90. js: r.expr([]).reduce(function(a,b){return a+b}).default(function(e){return e})
  91. ot: ("Cannot reduce over an empty stream.")
  92. - cd: r.expr([]).union([]).reduce{|a,b| a+b}.default{|e| e}
  93. py: r.expr([]).union([]).reduce(lambda a,b:a+b).default(lambda e:e)
  94. js: r.expr([]).union([]).reduce(function(a,b){return a+b}).default(function(e){return e})
  95. ot: ("Cannot reduce over an empty stream.")
  96. - cd: (r.expr(null) + 5).default{|e| e}
  97. py: (r.expr(null) + 5).default(lambda e:e)
  98. js: (r.expr(null).add(5)).default(function(e){return e})
  99. ot: ("Expected type NUMBER but found NULL.")
  100. - cd: (5 + r.expr(null)).default{|e| e}
  101. py: (5 + r.expr(null)).default(lambda e:e)
  102. js: (r.expr(5).add(null)).default(function(e){return e})
  103. ot: ("Expected type NUMBER but found NULL.")
  104. - cd: (5 - r.expr(null)).default{|e| e}
  105. py: (5 - r.expr(null)).default(lambda e:e)
  106. js: (r.expr(5).sub(null)).default(function(e){return e})
  107. ot: ("Expected type NUMBER but found NULL.")
  108. - cd: (r.expr(null) - 5).default{|e| e}
  109. py: (r.expr(null) - 5).default(lambda e:e)
  110. js: (r.expr(null).sub(5)).default(function(e){return e})
  111. ot: ("Expected type NUMBER but found NULL.")
  112. - def: arr = r.expr([{'a':1},{'a':null},{}]).order_by('a')
  113. - cd: arr.filter{|x| x['a'].eq(1)}
  114. py: arr.filter(lambda x:x['a'].eq(1))
  115. js: arr.filter(function(x){return x('a').eq(1)})
  116. ot: [{'a':1}]
  117. - cd: arr.filter(:default => false){|x| x['a'].eq(1)}
  118. py: arr.filter(lambda x:x['a'].eq(1), default=False)
  119. js: arr.filter(function(x){return x('a').eq(1)}, {'default':false})
  120. ot: [{'a':1}]
  121. - cd: arr.filter(:default => true){|x| x['a'].eq(1)}
  122. py: arr.filter(lambda x:x['a'].eq(1), default=True)
  123. js: arr.filter(function(x){return x('a').eq(1)}, {'default':true})
  124. ot: [{}, {'a':1}]
  125. # `null` compares not equal to 1 with no error
  126. - cd: arr.filter(:default => r.js('true')){|x| x['a'].eq(1)}
  127. py: arr.filter(lambda x:x['a'].eq(1), default=r.js('true'))
  128. js: arr.filter(function(x) { return x('a').eq(1) }, { 'default':r.js('true') })
  129. ot: [{}, {'a':1}]
  130. - cd: arr.filter(:default => r.js('false')){|x| x['a'].eq(1)}
  131. py: arr.filter(lambda x:x['a'].eq(1), default=r.js('false'))
  132. js: arr.filter(function(x) { return x('a').eq(1) }, { 'default':r.js('false') })
  133. ot: [{'a':1}]
  134. - cd: arr.filter(:default => r.error){|x| x['a'].eq(1)}
  135. py: arr.filter(lambda x:x['a'].eq(1), default=r.error())
  136. js: arr.filter(function(x){return x('a').eq(1)}, {'default':r.error()})
  137. ot: err("ReqlNonExistenceError", "No attribute `a` in object:", [])
  138. - cd: r.expr(false).do{|d| arr.filter(:default => d){|x| x['a'].eq(1)}}
  139. py: r.expr(False).do(lambda d:arr.filter(lambda x:x['a'].eq(1), default=d))
  140. js: r.expr(false).do(function(d){return arr.filter(function(x){return x('a').eq(1)}, {default:d})})
  141. ot: [{'a':1}]
  142. - cd: r.expr(true).do{|d| arr.filter(:default => d){|x| x['a'].eq(1)}}.orderby('a')
  143. py: r.expr(True).do(lambda d:arr.filter(lambda x:x['a'].eq(1), default=d)).order_by('a')
  144. js: r.expr(true).do(function(d){return arr.filter(function(x){return x('a').eq(1)}, {default:d})}).orderBy('a')
  145. ot: [{}, {'a':1}]
  146. # `null` compares not equal to 1 with no error
  147. - cd: arr.filter{|x| x['a'].default(0).eq(1)}
  148. py: arr.filter(lambda x:x['a'].default(0).eq(1))
  149. js: arr.filter(function(x){return x('a').default(0).eq(1)})
  150. ot: [{'a':1}]
  151. - cd: arr.filter{|x| x['a'].default(1).eq(1)}.orderby('a')
  152. py: arr.filter(lambda x:x['a'].default(1).eq(1)).order_by('a')
  153. js: arr.filter(function(x){return x('a').default(1).eq(1)}).orderBy('a')
  154. ot: ([{}, {'a':null}, {'a':1}])
  155. - cd: arr.filter{|x| x['a'].default(r.error).eq(1)}
  156. py: arr.filter(lambda x:x['a'].default(r.error()).eq(1))
  157. js: arr.filter(function(x){return x('a').default(r.error()).eq(1)})
  158. ot: [{'a':1}]
  159. # gets caught by `filter` default
  160. - cd: r.expr(0).do{|i| arr.filter{|x| x['a'].default(i).eq(1)}}
  161. py: r.expr(0).do(lambda i:arr.filter(lambda x:x['a'].default(i).eq(1)))
  162. js: r.expr(0).do(function(i){return arr.filter(function(x){return x('a').default(i).eq(1)})})
  163. ot: [{'a':1}]
  164. - cd: r.expr(1).do{|i| arr.filter{|x| x['a'].default(i).eq(1)}}.orderby('a')
  165. py: r.expr(1).do(lambda i:arr.filter(lambda x:x['a'].default(i).eq(1))).order_by('a')
  166. js: r.expr(1).do(function(i){return arr.filter(function(x){return x('a').default(i).eq(1)})}).orderBy('a')
  167. ot: ([{},{'a':null},{'a':1}])
  168. - cd: arr.filter{|x| x['a'].eq(1).or(x['a']['b'].eq(2))}
  169. py: arr.filter(lambda x:r.or_(x['a'].eq(1), x['a']['b'].eq(2)))
  170. js: arr.filter(function(x){return x('a').eq(1).or(x('a')('b').eq(2))})
  171. ot: [{'a':1}]
  172. - cd: arr.filter(:default => false){|x| x['a'].eq(1).or(x['a']['b'].eq(2))}
  173. py: arr.filter(lambda x:r.or_(x['a'].eq(1), x['a']['b'].eq(2)), default=False)
  174. js: arr.filter(function(x){return x('a').eq(1).or(x('a')('b').eq(2))}, {default:false})
  175. ot: [{'a':1}]
  176. - cd: arr.filter(:default => true){|x| x['a'].eq(1).or(x['a']['b'].eq(2))}.orderby('a')
  177. py: arr.filter(lambda x:r.or_(x['a'].eq(1), x['a']['b'].eq(2)), default=True).order_by('a')
  178. js: arr.filter(function(x){return x('a').eq(1).or(x('a')('b').eq(2))}, {default:true}).orderBy('a')
  179. ot: ([{}, {'a':null}, {'a':1}])
  180. - cd: arr.filter(:default => r.error){|x| x['a'].eq(1).or(x['a']['b'].eq(2))}
  181. py: arr.filter(lambda x:r.or_(x['a'].eq(1), x['a']['b'].eq(2)), default=r.error())
  182. js: arr.filter(function(x){return x('a').eq(1).or(x('a')('b').eq(2))}, {default:r.error()})
  183. ot: err("ReqlNonExistenceError", "No attribute `a` in object:", [])
  184. - cd: r.table_create('default_test')
  185. ot: partial({'tables_created':1})
  186. - cd: r.table('default_test').insert(arr)
  187. ot: ({'deleted':0,'replaced':0,'generated_keys':arrlen(3,uuid()),'unchanged':0,'errors':0,'skipped':0,'inserted':3})
  188. - def: tbl = r.table('default_test').order_by('a').pluck('a')
  189. - cd: tbl.filter{|x| x['a'].eq(1)}
  190. py: tbl.filter(lambda x:x['a'].eq(1))
  191. js: tbl.filter(function(x){return x('a').eq(1)})
  192. ot: [{'a':1}]
  193. - cd: tbl.filter(:default => false){|x| x['a'].eq(1)}
  194. py: tbl.filter(lambda x:x['a'].eq(1), default=False)
  195. js: tbl.filter(function(x){return x('a').eq(1)}, {'default':false})
  196. ot: [{'a':1}]
  197. - cd: tbl.filter(:default => true){|x| x['a'].eq(1)}
  198. py: tbl.filter(lambda x:x['a'].eq(1), default=True)
  199. js: tbl.filter(function(x){return x('a').eq(1)}, {'default':true})
  200. ot: [{}, {'a':1}]
  201. # `null` compares not equal to 1 with no error
  202. - cd: tbl.filter(:default => r.error){|x| x['a'].eq(1)}
  203. py: tbl.filter(lambda x:x['a'].eq(1), default=r.error())
  204. js: tbl.filter(function(x){return x('a').eq(1)}, {'default':r.error()})
  205. ot: err("ReqlNonExistenceError", "No attribute `a` in object:", [])
  206. - cd: r.expr(false).do{|d| tbl.filter(:default => d){|x| x['a'].eq(1)}}
  207. py: r.expr(False).do(lambda d:tbl.filter(lambda x:x['a'].eq(1), default=d))
  208. js: r.expr(false).do(function(d){return tbl.filter(function(x){return x('a').eq(1)}, {default:d})})
  209. ot: [{'a':1}]
  210. - cd: r.expr(true).do{|d| tbl.filter(:default => d){|x| x['a'].eq(1)}}.orderby('a')
  211. py: r.expr(True).do(lambda d:tbl.filter(lambda x:x['a'].eq(1), default=d)).order_by('a')
  212. js: r.expr(true).do(function(d){return tbl.filter(function(x){return x('a').eq(1)}, {default:d})}).orderBy('a')
  213. ot: [{}, {'a':1}]
  214. # `null` compares not equal to 1 with no error
  215. - cd: tbl.filter{|x| x['a'].default(0).eq(1)}
  216. py: tbl.filter(lambda x:x['a'].default(0).eq(1))
  217. js: tbl.filter(function(x){return x('a').default(0).eq(1)})
  218. ot: [{'a':1}]
  219. - cd: tbl.filter{|x| x['a'].default(1).eq(1)}.orderby('a')
  220. py: tbl.filter(lambda x:x['a'].default(1).eq(1)).order_by('a')
  221. js: tbl.filter(function(x){return x('a').default(1).eq(1)}).orderBy('a')
  222. ot: ([{}, {'a':null}, {'a':1}])
  223. - cd: tbl.filter{|x| x['a'].default(r.error).eq(1)}
  224. py: tbl.filter(lambda x:x['a'].default(r.error()).eq(1))
  225. js: tbl.filter(function(x){return x('a').default(r.error()).eq(1)})
  226. ot: [{'a':1}]
  227. # gets caught by `filter` default
  228. - cd: r.expr(0).do{|i| tbl.filter{|x| x['a'].default(i).eq(1)}}
  229. py: r.expr(0).do(lambda i:tbl.filter(lambda x:x['a'].default(i).eq(1)))
  230. js: r.expr(0).do(function(i){return tbl.filter(function(x){return x('a').default(i).eq(1)})})
  231. ot: [{'a':1}]
  232. - cd: r.expr(1).do{|i| tbl.filter{|x| x['a'].default(i).eq(1)}}.orderby('a')
  233. py: r.expr(1).do(lambda i:tbl.filter(lambda x:x['a'].default(i).eq(1))).order_by('a')
  234. js: r.expr(1).do(function(i){return tbl.filter(function(x){return x('a').default(i).eq(1)})}).orderBy('a')
  235. ot: ([{},{'a':null},{'a':1}])
  236. - cd: tbl.filter{|x| x['a'].eq(1).or(x['a']['b'].eq(2))}
  237. py: tbl.filter(lambda x:r.or_(x['a'].eq(1), x['a']['b'].eq(2)))
  238. js: tbl.filter(function(x){return x('a').eq(1).or(x('a')('b').eq(2))})
  239. ot: [{'a':1}]
  240. - cd: tbl.filter(:default => false){|x| x['a'].eq(1).or(x['a']['b'].eq(2))}
  241. py: tbl.filter(lambda x:r.or_(x['a'].eq(1), x['a']['b'].eq(2)), default=False)
  242. js: tbl.filter(function(x){return x('a').eq(1).or(x('a')('b').eq(2))}, {default:false})
  243. ot: [{'a':1}]
  244. - cd: tbl.filter(:default => true){|x| x['a'].eq(1).or(x['a']['b'].eq(2))}.orderby('a')
  245. py: tbl.filter(lambda x:r.or_(x['a'].eq(1), x['a']['b'].eq(2)), default=True).order_by('a')
  246. js: tbl.filter(function(x){return x('a').eq(1).or(x('a')('b').eq(2))}, {default:true}).orderBy('a')
  247. ot: ([{}, {'a':null}, {'a':1}])
  248. - cd: tbl.filter(:default => r.error){|x| x['a'].eq(1).or(x['a']['b'].eq(2))}
  249. py: tbl.filter(lambda x:r.or_(x['a'].eq(1), x['a']['b'].eq(2)), default=r.error())
  250. js: tbl.filter(function(x){return x('a').eq(1).or(x('a')('b').eq(2))}, {default:r.error()})
  251. ot: err("ReqlNonExistenceError", "No attribute `a` in object:", [])
  252. - cd: r.table_drop('default_test')
  253. ot: partial({'tables_dropped':1})