# The `==` operator

## Returns correct result when used on two `Null`s

### Juttle

    emit -from Date.new(0) -limit 1 | put eq = null == null | view result

### Output

    { "time": "1970-01-01T00:00:00.000Z", eq: true }

## Returns correct result when used on two `Boolean`s

### Juttle

    emit -from Date.new(0) -limit 1
      | put eq = true == true
      | put ne = true == false
      | view result

### Output

    { "time": "1970-01-01T00:00:00.000Z", eq: true, ne: false }

## Returns correct result when used on two `Number`s

### Juttle

    emit -from Date.new(0) -limit 1
      | put eq = 5 == 5
      | put ne = 5 == 6
      | view result

### Output

    { "time": "1970-01-01T00:00:00.000Z", eq: true, ne: false }

## Returns correct result when used on two `String`s

### Juttle

    emit -from Date.new(0) -limit 1
      | put eq = "abcd" == "abcd"
      | put ne = "abcd" == "efgh"
      | view result

### Output

    { "time": "1970-01-01T00:00:00.000Z", eq: true, ne: false }

## Returns correct result when used on two `RegExp`s

### Juttle

    emit -from Date.new(0) -limit 1
      | put eq = /abcd/ == /abcd/
      | put ne = /abcd/ == /efgh/
      | view result

### Output

    { "time": "1970-01-01T00:00:00.000Z", eq: true, ne: false }

## Returns correct result when used on two `Date`s

### Juttle

    emit -from Date.new(0) -limit 1
      | put eq = :2015-01-01T00:00:05: == :2015-01-01T00:00:05:
      | put ne = :2015-01-01T00:00:05: == :2015-01-01T00:00:06:
      | view result

### Output

    { "time": "1970-01-01T00:00:00.000Z", eq: true, ne: false }

## Returns correct result when used on two `Duration`s

### Juttle

    emit -from Date.new(0) -limit 1
      | put eq = :00:00:05: == :00:00:05:
      | put ne = :00:00:05: == :00:00:06:
      | view result

### Output

    { "time": "1970-01-01T00:00:00.000Z", eq: true, ne: false }

## Returns correct result when used on two `Array`s

### Juttle

    emit -from Date.new(0) -limit 1
      | put eq1 = [1, 2, 3] == [1, 2, 3]
      | put eq2 = [{ a: [1] }] == [{ a: [1] }]
      | put ne1 = [1, 2, 3] == [4, 5, 6]
      | put ne2 = [{ a: [1] }] == [{ a: [2] }]
      | view result

### Output

    { "time": "1970-01-01T00:00:00.000Z", eq1: true, eq2: true, ne1: false, ne2: false }

## Returns correct result when used on two `Object`s

### Juttle

    emit -from Date.new(0) -limit 1
      | put eq1 = { a: 1, b: 2, c: 3 } == { a: 1, b: 2, c: 3 }
      | put eq2 = { a: [{ b: 1 }] } == { a: [{ b: 1 }] }
      | put ne1 = { a: 1, b: 2, c: 3 } == { d: 4, e: 5, f: 6 }
      | put ne2 = { a: [{ b: 1 }] } == { a: [{ b: 2 }] }
      | view result

### Output

    { "time": "1970-01-01T00:00:00.000Z", eq1: true, eq2: true, ne1: false, ne2: false }

## Returns `false` when used on two values of a different type

### Juttle

    emit -from Date.new(0) -limit 1 | put result = 5 == "abcd" | view result

### Output

    { "time": "1970-01-01T00:00:00.000Z", result: false }
