/* Copyright JS Foundation and other contributors, http://js.foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // tests for ECMA~262 v6 12.10.1 == and != operations var tests = [ // this 'this == this = 42', 'this == null = 42', 'this == undefined = 42', 'this == true = 42', 'this == 12 = 42', 'this == "foo" = 42', 'this == [12] = 42', 'this == class a {} = 42', 'this == function a(){} = 42', 'this == /[a]/ = 42', 'this == `foo` = 42', 'this != this = 42', 'this != null = 42', 'this != undefined = 42', 'this != true = 42', 'this != 12 = 42', 'this != "foo" = 42', 'this != [12] = 42', 'this != class a {} = 42', 'this != function a(){} = 42', 'this != /[a]/ = 42', 'this != `foo` = 42', // undefined 'undefined == null = 42', 'undefined == undefined = 42', 'undefined == true = 42', 'undefined == 12 = 42', 'undefined == "foo" = 42', 'undefined == [12] = 42', 'undefined == class a {} = 42', 'undefined == function a(){} = 42', 'undefined == /[a]/ = 42', 'undefined == `foo` = 42', 'undefined != null = 42', 'undefined != undefined = 42', 'undefined != true = 42', 'undefined != 12 = 42', 'undefined != "foo" = 42', 'undefined != [12] = 42', 'undefined != class a {} = 42', 'undefined != function a(){} = 42', 'undefined != /[a]/ = 42', 'undefined != `foo` = 42', // NullLiteral 'null == null = 42', 'null == true = 42', 'null == 12 = 42', 'null == "foo" = 42', 'null == [12] = 42', 'null == class a {} = 42', 'null == function a(){} = 42', 'null == /[a]/ = 42', 'null == `foo` = 42', 'null != null = 42', 'null != true = 42', 'null != 12 = 42', 'null != "foo" = 42', 'null != [12] = 42', 'null != class a {} = 42', 'null != function a(){} = 42', 'null != /[a]/ = 42', 'null != `foo` = 42', // BooleanLiteral 'true == true = 42', 'true == 12 = 42', 'true == "foo" = 42', 'true == [12] = 42', 'true == class a {} = 42', 'true == function a(){} = 42', 'true == /[a]/ = 42', 'true == `foo` = 42', 'true != true = 42', 'true != 12 = 42', 'true != "foo" = 42', 'true != [12] = 42', 'true != class a {} = 42', 'true != function a(){} = 42', 'true != /[a]/ = 42', 'true != `foo` = 42', // DecimalLiteral '5 == 12 = 42', '5 == "foo" = 42', '5 == [12] = 42', '5 == class a {} = 42', '5 == function a(){} = 42', '5 == /[a]/ = 42', '5 == `foo` = 42', '5 != 12 = 42', '5 != "foo" = 42', '5 != [12] = 42', '5 != class a {} = 42', '5 != function a(){} = 42', '5 != /[a]/ = 42', '5 != `foo` = 42', // StringLiteral '"foo" == "foo" = 42', '"foo" == [12] = 42', '"foo" == class a {} = 42', '"foo" == function a(){} = 42', '"foo" == /[a]/ = 42', '"foo" == `foo` = 42', '"foo" != "foo" = 42', '"foo" != [12] = 42', '"foo" != class a {} = 42', '"foo" != function a(){} = 42', '"foo" != /[a]/ = 42', '"foo" != `foo` = 42', // ArrayLiteral '[12] == [12] = 42', '[12] == class a {} = 42', '[12] == function a(){} = 42', '[12] == /[a]/ = 42', '[12] == `foo` = 42', '[12] != [12] = 42', '[12] != class a {} = 42', '[12] != function a(){} = 42', '[12] != /[a]/ = 42', '[12] != `foo` = 42', // ObjectLiteral 'this == {} = 42', 'this != {} = 42', 'undefined == {} = 42', 'undefined != {} = 42', 'null == {} = 42', 'null != {} = 42', 'true == {} = 42', 'true != {} = 42', '5 == {} = 42', '5 != {} = 42', '"foo" == {} = 42', '"foo" != {} = 42', '[12] == {} = 42', '[12] != {} = 42', '/[a]/ == {} = 42', '`foo` == {} = 42', '/[a]/ != {} = 42', '`foo` != {} = 42', // RegularExpressionLiteral '/[a]/ == class a{} = 42', '/[a]/ == function a(){} = 42', '/[a]/ == /[a]/ = 42', '/[a]/ == `foo` = 42', '/[a]/ != class a{} = 42', '/[a]/ != function a(){} = 42', '/[a]/ != /[a]/ = 42', '/[a]/ != `foo` = 42', // TemplateLiteral '`foo` == class a{} = 42', '`foo` == function a(){} = 42', '`foo` == `foo` = 42', '`foo` != class a{} = 42', '`foo` != function a(){} = 42', '`foo` != `foo` = 42', // combining with RelationalExpression '"foo" == 6 * 6 + !4 / 7 = 42', '5 >> void function a(){} != +6 * !6 - ~4 / "foo" = 42', 'var a = 5; "foo" >> 5 >= 12 != --a / "foo" << function a(){} = 42', '~`foo` << !5 == /(?:)/ >> "foo" + void 6 / typeof class a {} = 42', 'function a(){}; var b = new a(); 6 + 3 == +/[A]/ / "foo" + 2 << 12 == 5 >> b / !23 + ++b = 42', 'var a = {"foo": function(){}}; !4 * delete a != 3 >> void "foo" % 12 != ++a.foo = 42', 'var a = {"foo": function(){}}; [1,2,3] / 5 >> void "foo" == 5 << -"foo" % 12 == typeof a.foo() = 42', 'var a = [1,2,3]; a[2] == !a[0] % /[A]/ - delete 12 = 42', ]; for (var i = 0; i < tests.length; i++) { try { eval(tests[i]); assert(false); } catch (e) { assert(e instanceof SyntaxError); } }