// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
info: Operator x | y returns ToNumber(x) | ToNumber(y)
es5id: 11.10.3_A3_T2.1
description: >
    Type(x) is different from Type(y) and both types vary between
    Number (primitive or object) and Boolean (primitive and object)
---*/

//CHECK#1
if ((true | 1) !== 1) {
  $ERROR('#1: (true | 1) === 1. Actual: ' + ((true | 1)));
}

//CHECK#2
if ((1 | true) !== 1) {
  $ERROR('#2: (1 | true) === 1. Actual: ' + ((1 | true)));
}

//CHECK#3
if ((new Boolean(true) | 1) !== 1) {
  $ERROR('#3: (new Boolean(true) | 1) === 1. Actual: ' + ((new Boolean(true) | 1)));
}

//CHECK#4
if ((1 | new Boolean(true)) !== 1) {
  $ERROR('#4: (1 | new Boolean(true)) === 1. Actual: ' + ((1 | new Boolean(true))));
}

//CHECK#5
if ((true | new Number(1)) !== 1) {
  $ERROR('#5: (true | new Number(1)) === 1. Actual: ' + ((true | new Number(1))));
}

//CHECK#6
if ((new Number(1) | true) !== 1) {
  $ERROR('#6: (new Number(1) | true) === 1. Actual: ' + ((new Number(1) | true)));
}

//CHECK#7
if ((new Boolean(true) | new Number(1)) !== 1) {
  $ERROR('#7: (new Boolean(true) | new Number(1)) === 1. Actual: ' + ((new Boolean(true) | new Number(1))));
}

//CHECK#8
if ((new Number(1) | new Boolean(true)) !== 1) {
  $ERROR('#8: (new Number(1) | new Boolean(true)) === 1. Actual: ' + ((new Number(1) | new Boolean(true))));
}
