desc: Tests for basic usage of the subtraction operation
tests:
    
    # Python supports the overloaded operator '-' in both directions
    - py: [(r.expr(1) - 1), (1 - r.expr(1)), (r.expr(1).sub(1))]
      js: r(1).sub(1)
      rb: [(r 1) - 1, 1 - (r 1), r(1).sub(1)]
      ot: 0

    - py: r.expr(-1) - 1
      js: r(-1).sub(1)
      rb: (r -1) - 1
      ot: -2

    - py: r.expr(1.75) - 8.5
      js: r(1.75).sub(8.5)
      rb: (r 1.75) - 8.5
      ot: -6.75

    # All arithmetic operations (except mod) actually support arbitrary arguments
    # but this feature can't be accessed in Python because it's operators are binary
    - js: r(1).sub(2,3,4,5)
      cd: []
      ot: -13 

    # Type errors
    - py: r.expr('a') - 0.8
      cd: r('a').sub(0.8)
      ot: err('RqlRuntimeError', 'Expected type NUMBER but found STRING.', [0])

    - py: r.expr(1) - 'a'
      cd: r(1).sub('a')
      ot: err('RqlRuntimeError', 'Expected type NUMBER but found STRING.', [1])

    - py: r.expr('b') - 'a'
      cd: r('b').sub('a')
      ot: err('RqlRuntimeError', 'Expected type NUMBER but found STRING.', [0])
