diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-11-02 07:05:11 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-11-02 07:05:11 -0700 |
commit | 4e88c80a22b6ca982341413ee806ade0df57b4b7 (patch) | |
tree | 82c2daaac597f74595bc83c18646280a56898e1a /ext/librethinkdbxx/test/upstream/transform/object.yaml | |
parent | a6203ed0389c1b995ebe94935b2d1ddeb01f36ee (diff) | |
download | infinitytier-4e88c80a22b6ca982341413ee806ade0df57b4b7.tar.gz infinitytier-4e88c80a22b6ca982341413ee806ade0df57b4b7.zip |
RethinkDB native connector work, minor fixes.
Diffstat (limited to 'ext/librethinkdbxx/test/upstream/transform/object.yaml')
-rw-r--r-- | ext/librethinkdbxx/test/upstream/transform/object.yaml | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/ext/librethinkdbxx/test/upstream/transform/object.yaml b/ext/librethinkdbxx/test/upstream/transform/object.yaml new file mode 100644 index 00000000..41f9aa91 --- /dev/null +++ b/ext/librethinkdbxx/test/upstream/transform/object.yaml @@ -0,0 +1,147 @@ +desc: Tests manipulation operations on objects +tests: + + # Define some objects to work with + - def: obj = r.expr({'a':1, 'b':2,'c':"str",'d':null,'e':{'f':'buzz'}}) + + ## Get attr + + - cd: obj['a'] + js: + - obj('a') + - obj.getField('a') + ot: 1 + - cd: obj['c'] + js: + - obj('c') + - obj.getField('c') + ot: 'str' + + ## Has_Fields + + - cd: obj.has_fields('b') + ot: true + - cd: obj.keys().contains('d') + ot: true + - cd: obj.has_fields('d') + ot: false + - cd: obj.has_fields({'e':'f'}) + ot: true + - cd: obj.has_fields({'e':'g'}) + ot: false + - cd: obj.has_fields('f') + ot: false + + # Has_Fields is variadic + - cd: obj.has_fields('a', 'b') + ot: true + - cd: obj.has_fields('a', 'd') + ot: false + - cd: obj.has_fields('a', 'f') + ot: false + - cd: obj.has_fields('a', {'e':'f'}) + ot: true + + # Has_Fields is polymorphic + - cd: r.expr([obj, obj.pluck('a', 'b')]).has_fields('a', 'b').count() + ot: 2 + - cd: r.expr([obj, obj.pluck('a', 'b')]).has_fields('a', 'c').count() + ot: 1 + - cd: r.expr([obj, obj.pluck('a', 'e')]).has_fields('a', {'e':'f'}).count() + ot: 2 + + ## Pluck + + - cd: obj.pluck('a') + ot: {'a':1} + - cd: obj.pluck('a', 'b') + ot: {'a':1, 'b':2} + + ## Without + + - cd: obj.without('a') + ot: {'b':2, 'c':'str', 'd':null, 'e':{'f':'buzz'}} + - cd: obj.without('a', 'b') + ot: {'c':'str', 'd':null,'e':{'f':'buzz'}} + - cd: obj.without('a', 'b', 'c', 'd') + ot: {'e':{'f':'buzz'}} + - cd: obj.without({'e':'f'}) + ot: {'a':1, 'b':2, 'c':'str', 'd':null, 'e':{}} + - cd: obj.without({'e':'buzz'}) + ot: {'a':1, 'b':2, 'c':'str', 'd':null, 'e':{'f':'buzz'}} + + ## Merge + #obj = r.expr({'a':1, 'b':2,'c':"str",'d':null,'e':{'f':'buzz'}}) + + # complete replacement + - cd: obj.merge(1) + ot: 1 + + # add attr + - cd: obj.merge({'e':-2}) + ot: {'a':1, 'b':2, 'c':'str', 'd':null, 'e':-2} + + # delete attr + - cd: obj.merge({'e':r.literal()}) + ot: {'a':1, 'b':2, 'c':'str', 'd':null} + + # recursive merge + - cd: obj.merge({'e':{'f':'quux'}}) + ot: {'a':1, 'b':2, 'c':'str', 'd':null, 'e':{'f':'quux'}} + + - cd: obj.merge({'e':{'g':'quux'}}) + ot: {'a':1, 'b':2, 'c':'str', 'd':null, 'e':{'f':'buzz', 'g':'quux'}} + + - cd: obj.merge({'e':r.literal({'g':'quux'})}) + ot: {'a':1, 'b':2, 'c':'str', 'd':null, 'e':{'g':'quux'}} + + # overwrite + - cd: obj.merge({'a':-1}) + ot: {'a':-1, 'b':2, 'c':'str', 'd':null, 'e':{'f':'buzz'}} + + - def: errmsg = 'Stray literal keyword found:'+' literal is only legal inside of the object passed to merge or update and cannot nest inside other literals.' + + # errors + - cd: r.literal('foo') + ot: err("ReqlQueryLogicError", errmsg, []) + + - cd: obj.merge(r.literal('foo')) + ot: err("ReqlQueryLogicError", errmsg, []) + + - cd: obj.merge({'foo':r.literal(r.literal('foo'))}) + ot: err("ReqlQueryLogicError", errmsg, []) + + - def: o = r.expr({'a':{'b':1, 'c':2}, 'd':3}) + + - cd: o.merge({'e':4}, {'f':5}) + ot: ({'a':{'b':1, 'c':2}, 'd':3, 'e':4, 'f':5}) + + - rb: r.expr([o, o.merge({'d':4})]).merge{|row| {'e':row['d']}} + py: r.expr([o, o.merge({'d':4})]).merge(lambda row:{'e':row['d']}) + js: r.expr([o, o.merge({'d':4})]).merge(function(row){return {'e':row('d')}}) + ot: ([{'a':{'b':1, 'c':2}, 'd':3, 'e':3}, {'a':{'b':1, 'c':2}, 'd':4, 'e':4}]) + + - py: r.expr([o, o.merge({'d':4})]).merge({'e':r.row['d']}) + js: r.expr([o, o.merge({'d':4})]).merge({'e':r.row('d')}) + ot: ([{'a':{'b':1, 'c':2}, 'd':3, 'e':3}, {'a':{'b':1, 'c':2}, 'd':4, 'e':4}]) + + - rb: r.expr([o, o.merge({'d':4})]).merge{|row| {'a':{'b':2}}} + py: r.expr([o, o.merge({'d':4})]).merge(lambda row:{'a':{'b':2}}) + js: r.expr([o, o.merge({'d':4})]).merge(function(row){return {'a':{'b':2}}}) + ot: ([{'a':{'b':2, 'c':2}, 'd':3}, {'a':{'b':2, 'c':2}, 'd':4}]) + + - rb: r.expr([o, o.merge({'d':4})]).merge{|row| {'a':r.literal({'b':2})}} + py: r.expr([o, o.merge({'d':4})]).merge(lambda row:{'a':r.literal({'b':2})}) + js: r.expr([o, o.merge({'d':4})]).merge(function(row){return {'a':r.literal({'b':2})}}) + ot: ([{'a':{'b':2}, 'd':3}, {'a':{'b':2}, 'd':4}]) + + ## keys + - cd: obj.keys() + ot: (['a', 'b', 'c', 'd', 'e']) + + - cd: obj.values() + ot: ([1, 2, 'str', null, {'f':'buzz'}]) + + ## count + - cd: obj.count() + ot: 5 |