2017-11-02 07:05:11 -07:00

107 lines
4.3 KiB
YAML

desc: Tests the RQL `map` function
tests:
# Type_of
- js: r.range().map(r.range(), function(x, y){return [x, y]}).type_of()
py: r.range().map(r.range(), lambda x, y:(x, y)).type_of()
rb: r.range().map(r.range()){|x, y| [x, y]}.type_of()
ot: 'STREAM'
- js: r.range().map(r.expr([]), function(x, y){return [x, y]}).type_of()
py: r.range().map(r.expr([]), lambda x, y:(x, y)).type_of()
rb: r.range().map(r.expr([])){|x, y| [x, y]}.type_of()
ot: 'STREAM'
- js: r.expr([]).map(r.expr([]), function(x, y){return [x, y]}).type_of()
py: r.expr([]).map(r.expr([]), lambda x, y:(x, y)).type_of()
rb: r.expr([]).map(r.expr([])){|x, y| [x, y]}.type_of()
ot: 'ARRAY'
# Arity
- js: r.range(3).map(function(){return 0})
py: r.range(3).map(lambda:0)
rb: r.map(r.range(3)){0}
ot: [0, 0, 0]
- js: r.range(3).map(r.range(4), function(){return 0})
py: r.range(3).map(r.range(4), lambda x,y:0)
rb: r.range(3).map(r.range(4)){0}
ot: [0, 0, 0]
- js: r.expr([1]).map(function(x){return [x]})
py: r.expr([1]).map(lambda x:(x,))
rb: r.map(r.expr([1])){|x| [x]}
ot: [[1]]
- js: r.expr([1]).map(r.expr([1]), function(x, y){return [x, y]})
py: r.expr([1]).map(r.expr([1]), lambda x, y:(x, y))
rb: r.map(r.expr([1]), r.expr([1])){|x, y| [x, y]}
ot: [[1, 1]]
- js: r.expr([1]).map(r.expr([1]), r.expr([1]), function(x, y, z){return [x, y, z]})
py: r.expr([1]).map(r.expr([1]), r.expr([1]), lambda x, y, z:(x, y, z))
rb: r.map(r.expr([1]), r.expr([1]), r.expr([1])){|x, y, z| [x, y, z]}
ot: [[1, 1, 1]]
# Incorrect arity
- js: r.expr([1]).map(function(x, y){return [x, y]})
py: r.expr([1]).map(lambda x, y:(x, y))
rb: r.map(r.expr([1])){|x, y| [x, y]}
ot: err("ReqlQueryLogicError", "The function passed to `map` expects 2 arguments, but 1 sequence was found.", [])
- js: r.expr([1]).map(r.expr([1]), function(x){return [x]})
py: r.expr([1]).map(r.expr([1]), lambda x:(x,))
rb: r.map(r.expr([1]), r.expr([1])){|x| [x]}
ot: err("ReqlQueryLogicError", "The function passed to `map` expects 1 argument, but 2 sequences were found.", [])
# Length
- js: r.range().map(r.expr([]), function(x, y){return [x, y]})
py: r.range().map(r.expr([]), lambda x, y:(x, y))
rb: r.map(r.range(), r.expr([])){|x, y| [x, y]}
ot: []
- js: r.expr([1, 2]).map(r.expr([1, 2, 3, 4]), function(x, y){return [x, y]})
py: r.expr([1, 2]).map(r.expr([1, 2, 3, 4]), lambda x, y:(x, y))
rb: r.map(r.expr([1, 2]), r.expr([1, 2, 3, 4])){|x, y| [x, y]}
ot: [[1, 1], [2, 2]]
- js: r.range(2).map(r.range(4), function(x, y){return [x, y]})
py: r.range(2).map(r.range(4), lambda x, y:(x, y))
rb: r.map(r.range(2), r.range(4)){|x, y| [x, y]}
ot: [[0, 0], [1, 1]]
- js: r.range().map(r.expr([1, 2, 3, 4]), function(x, y){return [x, y]})
py: r.range().map(r.expr([1, 2, 3, 4]), lambda x, y:(x, y))
rb: r.map(r.range(), r.expr([1, 2, 3, 4])){|x, y| [x, y]}
ot: [[0, 1], [1, 2], [2, 3], [3, 4]]
# Javascript
- cd: r.range(3).map(r.range(5), r.js("(function(x, y){return [x, y];})"))
ot: [[0, 0], [1, 1], [2, 2]]
# Types
- js: r.range().map(r.expr(1), function(x, y){return [x, y]})
py: r.range().map(r.expr(1), lambda x, y:(x, y))
rb: r.map(r.range(), r.expr(1)){|x, y| [x, y]}
ot: err("ReqlQueryLogicError", "Cannot convert NUMBER to SEQUENCE", [])
# Range interaction
- js: r.range().map(r.range(), function(x, y){return [x, y]}).count()
py: r.range().map(r.range(), lambda x, y:(x, y)).count()
rb: r.map(r.range(), r.range()){|x, y| [x, y]}.count()
ot: err("ReqlQueryLogicError", "Cannot use an infinite stream with an aggregation function (`reduce`, `count`, etc.) or coerce it to an array.", [])
# Prefix notation
- js: r.map(r.range(3), function(x){return [x]})
py: r.map(r.range(3), lambda x:(x,))
rb: r.map(r.range(3), lambda {|x| [x]})
ot: [[0], [1], [2]]
- js: r.map(r.range(3), r.row.add(1))
py: r.map(r.range(3), r.row + 1)
ot: [1, 2, 3]
- js: r.map(r.range(3), r.range(5), function(x, y){return [x, y]})
py: r.map(r.range(3), r.range(5), lambda x, y:(x, y))
rb: r.map(r.range(3), r.range(5)){|x, y| [x, y]}
ot: [[0, 0], [1, 1], [2, 2]]