desc: sindex api (#602)
tests:

  - cd: r.db('test').table_create('times_api')
    def: tbl = r.table('times_api')

  - def:
      rb: ts={"timezone"=>"-07:00","epoch_time"=>1375445162.0872,"$reql_type$"=>"TIME"}
      py: ts={"timezone":"-07:00","epoch_time":1375445162.0872,"$reql_type$":"TIME"}
      js: ts={"timezone":"-07:00","epoch_time":1375445162.0872,"$reql__type$":"TIME"}
  - def:
      rb: t1={"timezone"=>"-07:00","epoch_time"=>1375445163.0872,"$reql_type$"=>"TIME"}
      py: t1={"timezone":"-07:00","epoch_time":1375445163.0872,"$reql_type$":"TIME"}
      js: t1={"timezone":"-07:00","epoch_time":1375445163.0872,"$reql__type$":"TIME"}
  - def:
      rb: t2={"timezone"=>"-07:00","epoch_time"=>1375445163.08832,"$reql_type$"=>"TIME"}
      py: t2={"timezone":"-07:00","epoch_time":1375445163.08832,"$reql_type$":"TIME"}
      js: t2={"timezone":"-07:00","epoch_time":1375445163.08832,"$reql__type$":"TIME"}
  - def:
      rb: t3={"timezone"=>"-07:00","epoch_time"=>1375445163.08943,"$reql_type$"=>"TIME"}
      py: t3={"timezone":"-07:00","epoch_time":1375445163.08943,"$reql_type$":"TIME"}
      js: t3={"timezone":"-07:00","epoch_time":1375445163.08943,"$reql__type$":"TIME"}
  - def:
      rb: t4={"timezone"=>"-07:00","epoch_time"=>1375445163.09055,"$reql_type$"=>"TIME"}
      py: t4={"timezone":"-07:00","epoch_time":1375445163.09055,"$reql_type$":"TIME"}
      js: t4={"timezone":"-07:00","epoch_time":1375445163.09055,"$reql__type$":"TIME"}
  - def:
      rb: t5={"timezone"=>"-07:00","epoch_time"=>1375445163.09166,"$reql_type$"=>"TIME"}
      py: t5={"timezone":"-07:00","epoch_time":1375445163.09166,"$reql_type$":"TIME"}
      js: t5={"timezone":"-07:00","epoch_time":1375445163.09166,"$reql__type$":"TIME"}
  - def:
      rb: te={"timezone"=>"-07:00","epoch_time"=>1375445164.0872,"$reql_type$"=>"TIME"}
      py: te={"timezone":"-07:00","epoch_time":1375445164.0872,"$reql_type$":"TIME"}
      js: te={"timezone":"-07:00","epoch_time":1375445164.0872,"$reql__type$":"TIME"}

  - def:
      rb: trows = [{:id => t1}, {:id => t2}, {:id => t3}, {:id => t4}, {:id => t5}]
      cd: trows = [{'id':t1}, {'id':t2}, {'id':t3}, {'id':t4}, {'id':t5}]
  - cd: tbl.insert(trows)['inserted']
    js: tbl.insert(trows)('inserted')
    ot: 5

  - def: bad_insert = [{'id':r.expr(t1).in_timezone("Z")}]
  - cd: tbl.insert(bad_insert)['first_error']
    js: tbl.insert(badInsert)('first__error')
    ot: ("Duplicate primary key `id`:\n{\n\t\"id\":\t{\n\t\t\"$reql_type$\":\t\"TIME\",\n\t\t\"epoch_time\":\t1375445163.0869998932,\n\t\t\"timezone\":\t\"-07:00\"\n\t}\n}\n{\n\t\"id\":\t{\n\t\t\"$reql_type$\":\t\"TIME\",\n\t\t\"epoch_time\":\t1375445163.0869998932,\n\t\t\"timezone\":\t\"+00:00\"\n\t}\n}")

  - cd: tbl.between(ts, te).count()
    ot: 5
  - cd: tbl.between(t1, t4).count()
    ot: 3
  - cd: tbl.between(t1, t4, :right_bound => 'closed').count()
    py: tbl.between(t1, t4, right_bound='closed').count()
    js: tbl.between(t1, t4, {rightBound:'closed'}).count()
    ot: 4
  - cd: tbl.between(r.expr(ts).in_timezone("+06:00"), te).count()
    ot: 5
  - cd: tbl.between(t1, r.expr(t4).in_timezone("+08:00")).count()
    ot: 3
  - cd: tbl.between(r.expr(t1).in_timezone("Z"), t4, :right_bound => 'closed').count()
    py: tbl.between(r.expr(t1).in_timezone("Z"), t4, right_bound='closed').count()
    js: tbl.between(r.expr(t1).inTimezone("Z"), t4, {rightBound:'closed'}).count()
    ot: 4

  - cd: tbl.update{|row| {:a => row[:id]}}['replaced']
    py: tbl.update(lambda row:{'a':row['id']})['replaced']
    js: tbl.update(function(row) {return {'a':row('id')}})('replaced')
    ot: 5
  - cd: tbl.index_create('a')
    ot: ({'created':1})

  - cd: tbl.between(ts, te, :index => 'a').count()
    py: tbl.between(ts, te, index='a').count()
    js: tbl.between(ts, te, {index:'a'}).count()
    ot: 5
  - cd: tbl.between(t1, t4, :index => 'a').count()
    py: tbl.between(t1, t4, index='a').count()
    js: tbl.between(t1, t4, {index:'a'}).count()
    ot: 3
  - cd: tbl.between(t1, t4, :right_bound => 'closed', :index => 'a').count()
    py: tbl.between(t1, t4, right_bound='closed', index='a').count()
    js: tbl.between(t1, t4, {rightBound:'closed', index:'a'}).count()
    ot: 4
  - cd: tbl.between(r.expr(ts).in_timezone("+06:00"), te, :index => 'a').count()
    py: tbl.between(r.expr(ts).in_timezone("+06:00"), te, index='a').count()
    js: tbl.between(r.expr(ts).inTimezone("+06:00"), te, {index:'a'}).count()
    ot: 5
  - cd: tbl.between(t1, r.expr(t4).in_timezone("+08:00"), :index => 'a').count()
    py: tbl.between(t1, r.expr(t4).in_timezone("+08:00"), index='a').count()
    js: tbl.between(t1, r.expr(t4).inTimezone("+08:00"), {index:'a'}).count()
    ot: 3
  - cd: tbl.between(r.expr(t1).in_timezone("Z"), t4, :right_bound => 'closed', :index => 'a').count()
    py: tbl.between(r.expr(t1).in_timezone("Z"), t4, right_bound='closed', index='a').count()
    js: tbl.between(r.expr(t1).inTimezone("Z"), t4, {rightBound:'closed', index:'a'}).count()
    ot: 4

  - cd: tbl.index_create('b'){|row| r.branch(row[:id] < t4, row[:a], nil)}
    py: tbl.index_create('b', lambda row:r.branch(row['id'] < t4, row['a'], null))
    js: tbl.indexCreate('b', function(row) { return r.branch(row('id').lt(t4), row('a'), null); })
    ot: ({'created':1})

  - cd: tbl.between(ts, te, :index => 'b').count()
    py: tbl.between(ts, te, index='b').count()
    js: tbl.between(ts, te, {index:'b'}).count()
    ot: 3
  - cd: tbl.between(t1, t4, :index => 'b').count()
    py: tbl.between(t1, t4, index='b').count()
    js: tbl.between(t1, t4, {index:'b'}).count()
    ot: 3
  - cd: tbl.between(t1, t4, :right_bound => 'closed', :index => 'b').count()
    py: tbl.between(t1, t4, right_bound='closed', index='b').count()
    js: tbl.between(t1, t4, {rightBound:'closed', index:'b'}).count()
    ot: 3
  - cd: tbl.between(r.expr(ts).in_timezone("+06:00"), te, :index => 'b').count()
    py: tbl.between(r.expr(ts).in_timezone("+06:00"), te, index='b').count()
    js: tbl.between(r.expr(ts).inTimezone("+06:00"), te, {index:'b'}).count()
    ot: 3
  - cd: tbl.between(t1, r.expr(t4).in_timezone("+08:00"), :index => 'b').count()
    py: tbl.between(t1, r.expr(t4).in_timezone("+08:00"), index='b').count()
    js: tbl.between(t1, r.expr(t4).inTimezone("+08:00"), {index:'b'}).count()
    ot: 3
  - cd: tbl.between(r.expr(t1).in_timezone("Z"), t4, :right_bound => 'closed', :index => 'b').count()
    py: tbl.between(r.expr(t1).in_timezone("Z"), t4, right_bound='closed', index='b').count()
    js: tbl.between(r.expr(t1).inTimezone("Z"), t4, {rightBound:'closed', index:'b'}).count()
    ot: 3

  - def:
      rb: oldtime = Time.at(1375147296.681)
      py: oldtime = datetime.fromtimestamp(1375147296.681, pytz.timezone('US/Pacific'))
      js: oldtime = (new Date(1375147296.681*1000))
  - def:
      rb: curtime = Time.now
      py: curtime = datetime.now()
      js: curtime = (new Date())

  - cd: tbl.insert([{'id':oldtime}])['inserted']
    js: tbl.insert([{'id':oldtime}])('inserted')
    ot: 1
  # - cd: tbl.insert([{'id':oldtime}, {'id':curtime}])['inserted']
  #   ot: 1

  - cd: tbl.get(oldtime)['id'].type_of()
    js: tbl.get(oldtime)('id').typeOf()
    ot: ("PTYPE<TIME>")

  - cd: r.db('test').table_drop('times_api')
