// 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.7.2_A3_T2.2
description: >
    Type(x) is different from Type(y) and both types vary between
    Number (primitive or object) and String (primitive and object)
---*/

//CHECK#1
if ("1" >> 1 !== 0) {
  $ERROR('#1: "1" >> 1 === 0. Actual: ' + ("1" >> 1));
}

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

//CHECK#3
if (new String("1") >> 1 !== 0) {
  $ERROR('#3: new String("1") >> 1 === 0. Actual: ' + (new String("1") >> 1));
}

//CHECK#4
if (1 >> new String("1") !== 0) {
  $ERROR('#4: 1 >> new String("1") === 0. Actual: ' + (1 >> new String("1")));
}

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

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

//CHECK#7
if (new String("1") >> new Number(1) !== 0) {
  $ERROR('#7: new String("1") >> new Number(1) === 0. Actual: ' + (new String("1") >> new Number(1)));
}

//CHECK#8
if (new Number(1) >> new String("1") !== 0) {
  $ERROR('#8: new Number(1) >> new String("1") === 0. Actual: ' + (new Number(1) >> new String("1")));
}

//CHECK#9
if ("x" >> 1 !== 0) {
  $ERROR('#9: "x" >> 1 === 0. Actual: ' + ("x" >> 1));
}

//CHECK#10
if (1 >> "x" !== 1) {
  $ERROR('#10: 1 >> "x" === 1. Actual: ' + (1 >> "x"));
}
