Index: test/codegen/expect/language/equality_test.js |
diff --git a/test/codegen/expect/language/equality_test.js b/test/codegen/expect/language/equality_test.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9e07450799d9ec25e1ea1991ad03514994a49c98 |
--- /dev/null |
+++ b/test/codegen/expect/language/equality_test.js |
@@ -0,0 +1,108 @@ |
+dart_library.library('language/equality_test', null, /* Imports */[ |
+ 'dart_sdk', |
+ 'expect' |
+], function load__equality_test(exports, dart_sdk, expect) { |
+ 'use strict'; |
+ const core = dart_sdk.core; |
+ const dart = dart_sdk.dart; |
+ const dartx = dart_sdk.dartx; |
+ const expect$ = expect.expect; |
+ const equality_test = Object.create(null); |
+ let dynamicTodynamic = () => (dynamicTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic])))(); |
+ let VoidTodynamic = () => (VoidTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [])))(); |
+ let VoidTobool = () => (VoidTobool = dart.constFn(dart.definiteFunctionType(core.bool, [])))(); |
+ const _result = Symbol('_result'); |
+ equality_test.A = class A extends core.Object { |
+ new(result) { |
+ this[_result] = result; |
+ } |
+ ['=='](x) { |
+ return this[_result]; |
+ } |
+ }; |
+ dart.setSignature(equality_test.A, { |
+ constructors: () => ({new: dart.definiteFunctionType(equality_test.A, [core.bool])}) |
+ }); |
+ equality_test.opaque = function(x) { |
+ return [x, 1, 'y'][dartx.get](0); |
+ }; |
+ dart.fn(equality_test.opaque, dynamicTodynamic()); |
+ equality_test.Death = class Death extends core.Object { |
+ ['=='](x) { |
+ dart.throw('Dead!'); |
+ } |
+ }; |
+ equality_test.death = function() { |
+ return equality_test.opaque(new equality_test.Death()); |
+ }; |
+ dart.fn(equality_test.death, VoidTodynamic()); |
+ equality_test.nullFn = function() { |
+ return equality_test.opaque(null); |
+ }; |
+ dart.fn(equality_test.nullFn, VoidTodynamic()); |
+ equality_test.tests = function() { |
+ let alwaysTrue = new equality_test.A(true); |
+ let alwaysFalse = new equality_test.A(false); |
+ expect$.Expect.isFalse(dart.equals(alwaysFalse, alwaysFalse)); |
+ expect$.Expect.isTrue(!dart.equals(alwaysFalse, alwaysFalse)); |
+ expect$.Expect.isTrue(dart.equals(alwaysTrue, alwaysTrue)); |
+ expect$.Expect.isTrue(dart.equals(alwaysTrue, 5)); |
+ expect$.Expect.isFalse(alwaysTrue == null); |
+ expect$.Expect.isFalse(null == alwaysTrue); |
+ expect$.Expect.isTrue(alwaysTrue != null); |
+ expect$.Expect.isTrue(null != alwaysTrue); |
+ expect$.Expect.isTrue(null == null); |
+ expect$.Expect.isFalse(null != null); |
+ expect$.Expect.throws(dart.fn(() => dart.equals(equality_test.death(), 5), VoidTobool())); |
+ expect$.Expect.isFalse(dart.equals(equality_test.death(), equality_test.nullFn())); |
+ expect$.Expect.isFalse(dart.equals(equality_test.nullFn(), equality_test.death())); |
+ expect$.Expect.isTrue(dart.equals(equality_test.nullFn(), equality_test.nullFn())); |
+ expect$.Expect.isTrue(!dart.equals(equality_test.death(), equality_test.nullFn())); |
+ expect$.Expect.isTrue(!dart.equals(equality_test.nullFn(), equality_test.death())); |
+ expect$.Expect.isFalse(!dart.equals(equality_test.nullFn(), equality_test.nullFn())); |
+ if (dart.equals(equality_test.death(), equality_test.nullFn())) { |
+ dart.throw("failed"); |
+ } |
+ if (!dart.equals(equality_test.death(), equality_test.nullFn())) { |
+ } else { |
+ dart.throw("failed"); |
+ } |
+ }; |
+ dart.fn(equality_test.tests, VoidTodynamic()); |
+ equality_test.boolEqualityPositiveA = function(a) { |
+ return dart.equals(a, true); |
+ }; |
+ dart.fn(equality_test.boolEqualityPositiveA, dynamicTodynamic()); |
+ equality_test.boolEqualityNegativeA = function(a) { |
+ return !dart.equals(a, true); |
+ }; |
+ dart.fn(equality_test.boolEqualityNegativeA, dynamicTodynamic()); |
+ equality_test.boolEqualityPositiveB = function(a) { |
+ return dart.equals(true, a); |
+ }; |
+ dart.fn(equality_test.boolEqualityPositiveB, dynamicTodynamic()); |
+ equality_test.boolEqualityNegativeB = function(a) { |
+ return !dart.equals(true, a); |
+ }; |
+ dart.fn(equality_test.boolEqualityNegativeB, dynamicTodynamic()); |
+ equality_test.main = function() { |
+ for (let i = 0; i < 20; i++) { |
+ equality_test.tests(); |
+ expect$.Expect.isTrue(equality_test.boolEqualityPositiveA(true)); |
+ expect$.Expect.isFalse(equality_test.boolEqualityPositiveA(false)); |
+ expect$.Expect.isFalse(equality_test.boolEqualityNegativeA(true)); |
+ expect$.Expect.isTrue(equality_test.boolEqualityNegativeA(false)); |
+ expect$.Expect.isTrue(equality_test.boolEqualityPositiveB(true)); |
+ expect$.Expect.isFalse(equality_test.boolEqualityPositiveB(false)); |
+ expect$.Expect.isFalse(equality_test.boolEqualityNegativeB(true)); |
+ expect$.Expect.isTrue(equality_test.boolEqualityNegativeB(false)); |
+ } |
+ expect$.Expect.isFalse(equality_test.boolEqualityPositiveA(1)); |
+ expect$.Expect.isTrue(equality_test.boolEqualityNegativeA("hi")); |
+ expect$.Expect.isFalse(equality_test.boolEqualityPositiveB(2.0)); |
+ expect$.Expect.isTrue(equality_test.boolEqualityNegativeB([])); |
+ }; |
+ dart.fn(equality_test.main, VoidTodynamic()); |
+ // Exports: |
+ exports.equality_test = equality_test; |
+}); |