// 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.6.2_A3_T1.2
description: Type(x) and Type(y) vary between primitive number and Number object
---*/

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

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

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

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