6f73694bb7
Avoid falling back to the dart.equal runtime helper where possible based on static types. Also uses JS `==` or `===` in some cases. Treat core.identical as a compiler intrinsic, based on type. Make dart.test assume correct types, use dart.dtest for combined cast and nullability check only when required. Fixes https://github.com/dart-lang/sdk/issues/29851 Fixes https://github.com/dart-lang/sdk/issues/29772 BUG= R=jmesserly@google.com Review-Url: https://codereview.chromium.org/2926613003 .
1150 lines
55 KiB
JavaScript
1150 lines
55 KiB
JavaScript
define(['dart_sdk', 'expect'], function(dart_sdk, expect) {
|
|
'use strict';
|
|
const core = dart_sdk.core;
|
|
const dart = dart_sdk.dart;
|
|
const dartx = dart_sdk.dartx;
|
|
const minitest = expect.minitest;
|
|
const equality_test = Object.create(null);
|
|
let TToT = () => (TToT = dart.constFn(dart.gFnType(T => [T, [T]])))();
|
|
let VoidToT = () => (VoidToT = dart.constFn(dart.gFnType(T => [T, []])))();
|
|
let VoidToNull = () => (VoidToNull = dart.constFn(dart.fnType(core.Null, [])))();
|
|
let VoidTodynamic = () => (VoidTodynamic = dart.constFn(dart.fnType(dart.dynamic, [])))();
|
|
equality_test.Music = class Music extends core.Object {
|
|
toString() {
|
|
return {
|
|
0: "Music.country",
|
|
1: "Music.western"
|
|
}[this.index];
|
|
}
|
|
};
|
|
(equality_test.Music.new = function(x) {
|
|
this.index = x;
|
|
}).prototype = equality_test.Music.prototype;
|
|
dart.setSignature(equality_test.Music, {
|
|
fields: () => ({index: dart.finalFieldType(core.int)})
|
|
});
|
|
dart.defineEnumValues(equality_test.Music, [
|
|
'country',
|
|
'western'
|
|
]);
|
|
equality_test.BluesBrother = class BluesBrother extends core.Object {};
|
|
(equality_test.BluesBrother.new = function() {
|
|
}).prototype = equality_test.BluesBrother.prototype;
|
|
equality_test._Jake = class _Jake extends equality_test.BluesBrother {};
|
|
(equality_test._Jake.new = function() {
|
|
}).prototype = equality_test._Jake.prototype;
|
|
equality_test._Elwood = class _Elwood extends equality_test.BluesBrother {
|
|
['=='](other) {
|
|
return equality_test._Elwood.is(other);
|
|
}
|
|
};
|
|
(equality_test._Elwood.new = function() {
|
|
}).prototype = equality_test._Elwood.prototype;
|
|
dart.setSignature(equality_test._Elwood, {
|
|
methods: () => ({'==': dart.fnType(core.bool, [core.Object])})
|
|
});
|
|
equality_test._Norman = class _Norman extends equality_test.BluesBrother {};
|
|
(equality_test._Norman.new = function() {
|
|
}).prototype = equality_test._Norman.prototype;
|
|
equality_test.hideNull = function(T) {
|
|
return x => {
|
|
return x;
|
|
};
|
|
};
|
|
dart.fn(equality_test.hideNull, TToT());
|
|
equality_test.getUndefined = function(T) {
|
|
return () => {
|
|
return T._check(core.List.new(1)[dartx._get](0));
|
|
};
|
|
};
|
|
dart.fn(equality_test.getUndefined, VoidToT());
|
|
equality_test.main = function() {
|
|
minitest.group('Enum equality', dart.fn(() => {
|
|
minitest.test('Equal enum/enum (nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(equality_test.Music)(equality_test.Music.country);
|
|
let e2 = equality_test.hideNull(equality_test.Music)(equality_test.Music.western);
|
|
let d1 = equality_test.hideNull(equality_test.Music)(equality_test.Music.country);
|
|
let d2 = equality_test.hideNull(equality_test.Music)(equality_test.Music.western);
|
|
let o1 = equality_test.hideNull(core.Object)(equality_test.Music.country);
|
|
let o2 = equality_test.hideNull(core.Object)(equality_test.Music.western);
|
|
minitest.expect(e1 == e1, true);
|
|
minitest.expect(core.identical(e1, d1), true);
|
|
minitest.expect(core.identical(e1, o1), true);
|
|
minitest.expect(e1 == e2, false);
|
|
minitest.expect(core.identical(e1, o2), false);
|
|
minitest.expect(core.identical(e1, d2), false);
|
|
minitest.expect(e1 == e2, false);
|
|
minitest.expect(dart.equals(d1, e1), true);
|
|
minitest.expect(dart.equals(d1, d1), true);
|
|
minitest.expect(dart.equals(d1, o1), true);
|
|
minitest.expect(dart.equals(d1, e2), false);
|
|
minitest.expect(dart.equals(d1, d2), false);
|
|
minitest.expect(dart.equals(d1, o2), false);
|
|
minitest.expect(dart.equals(o1, e1), true);
|
|
minitest.expect(dart.equals(o1, d1), true);
|
|
minitest.expect(dart.equals(o1, o1), true);
|
|
minitest.expect(dart.equals(o1, e2), false);
|
|
minitest.expect(dart.equals(o1, d2), false);
|
|
minitest.expect(dart.equals(o1, o2), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal enum/enum (non-null)', dart.fn(() => {
|
|
let e1 = equality_test.Music.country;
|
|
let e2 = equality_test.Music.western;
|
|
let d1 = equality_test.Music.country;
|
|
let d2 = equality_test.Music.western;
|
|
let o1 = equality_test.Music.country;
|
|
let o2 = equality_test.Music.western;
|
|
minitest.expect(e1 === e1, true);
|
|
minitest.expect(e1 === d1, true);
|
|
minitest.expect(e1 === o1, true);
|
|
minitest.expect(e1 === e2, false);
|
|
minitest.expect(e1 === o2, false);
|
|
minitest.expect(e1 === d2, false);
|
|
minitest.expect(e1 === e2, false);
|
|
minitest.expect(dart.equals(d1, e1), true);
|
|
minitest.expect(dart.equals(d1, d1), true);
|
|
minitest.expect(dart.equals(d1, o1), true);
|
|
minitest.expect(dart.equals(d1, e2), false);
|
|
minitest.expect(dart.equals(d1, d2), false);
|
|
minitest.expect(dart.equals(d1, o2), false);
|
|
minitest.expect(dart.equals(o1, e1), true);
|
|
minitest.expect(dart.equals(o1, d1), true);
|
|
minitest.expect(dart.equals(o1, o1), true);
|
|
minitest.expect(dart.equals(o1, e2), false);
|
|
minitest.expect(dart.equals(o1, d2), false);
|
|
minitest.expect(dart.equals(o1, o2), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal enum/other (static, nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(equality_test.Music)(equality_test.Music.country);
|
|
let s1 = equality_test.hideNull(core.String)("hello");
|
|
let s2 = equality_test.hideNull(core.String)("");
|
|
let i1 = equality_test.hideNull(core.int)(3);
|
|
let i2 = equality_test.hideNull(core.int)(0);
|
|
let l1 = equality_test.hideNull(core.List)(core.List.new(3));
|
|
let b1 = equality_test.hideNull(equality_test.BluesBrother)(new equality_test._Norman.new());
|
|
minitest.expect(core.identical(e1, s1), false);
|
|
minitest.expect(core.identical(e1, s2), false);
|
|
minitest.expect(core.identical(e1, i1), false);
|
|
minitest.expect(core.identical(e1, i2), false);
|
|
minitest.expect(e1 == l1, false);
|
|
minitest.expect(e1 == b1, false);
|
|
minitest.expect(core.identical(s1, e1), false);
|
|
minitest.expect(core.identical(s2, e1), false);
|
|
minitest.expect(core.identical(i1, e1), false);
|
|
minitest.expect(core.identical(i2, e1), false);
|
|
minitest.expect(dart.equals(l1, e1), false);
|
|
minitest.expect(dart.equals(b1, e1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal enum/other (static, non-null)', dart.fn(() => {
|
|
let e1 = equality_test.Music.country;
|
|
let s1 = "hello";
|
|
let s2 = "";
|
|
let i1 = 3;
|
|
let i2 = 0;
|
|
let l1 = core.List.new(3);
|
|
let b1 = new equality_test._Norman.new();
|
|
minitest.expect(e1 === s1, false);
|
|
minitest.expect(e1 === s2, false);
|
|
minitest.expect(e1 === i1, false);
|
|
minitest.expect(e1 === i2, false);
|
|
minitest.expect(e1 === l1, false);
|
|
minitest.expect(e1 === b1, false);
|
|
minitest.expect(s1 === e1, false);
|
|
minitest.expect(s2 === e1, false);
|
|
minitest.expect(i1 === e1, false);
|
|
minitest.expect(i2 === e1, false);
|
|
minitest.expect(l1[dartx['==']](e1), false);
|
|
minitest.expect(b1['=='](e1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal enum/other (dynamic, nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(equality_test.Music)(equality_test.Music.country);
|
|
let d1 = equality_test.hideNull(equality_test.Music)(equality_test.Music.country);
|
|
let s1 = equality_test.hideNull(core.String)("hello");
|
|
let s2 = equality_test.hideNull(core.String)("");
|
|
let i1 = equality_test.hideNull(core.int)(3);
|
|
let i2 = equality_test.hideNull(core.int)(0);
|
|
let l1 = equality_test.hideNull(core.List)(core.List.new(3));
|
|
let b1 = equality_test.hideNull(equality_test._Norman)(new equality_test._Norman.new());
|
|
minitest.expect(core.identical(e1, s1), false);
|
|
minitest.expect(core.identical(e1, s2), false);
|
|
minitest.expect(core.identical(e1, i1), false);
|
|
minitest.expect(core.identical(e1, i2), false);
|
|
minitest.expect(core.identical(e1, l1), false);
|
|
minitest.expect(core.identical(e1, b1), false);
|
|
minitest.expect(dart.equals(s1, e1), false);
|
|
minitest.expect(dart.equals(s2, e1), false);
|
|
minitest.expect(dart.equals(i1, e1), false);
|
|
minitest.expect(dart.equals(i2, e1), false);
|
|
minitest.expect(dart.equals(l1, e1), false);
|
|
minitest.expect(dart.equals(b1, e1), false);
|
|
minitest.expect(dart.equals(d1, s1), false);
|
|
minitest.expect(dart.equals(d1, s2), false);
|
|
minitest.expect(dart.equals(d1, i1), false);
|
|
minitest.expect(dart.equals(d1, i2), false);
|
|
minitest.expect(dart.equals(d1, l1), false);
|
|
minitest.expect(dart.equals(d1, b1), false);
|
|
minitest.expect(dart.equals(s1, d1), false);
|
|
minitest.expect(dart.equals(s2, d1), false);
|
|
minitest.expect(dart.equals(i1, d1), false);
|
|
minitest.expect(dart.equals(i2, d1), false);
|
|
minitest.expect(dart.equals(l1, d1), false);
|
|
minitest.expect(dart.equals(b1, d1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal enum/other (dynamic, non-null)', dart.fn(() => {
|
|
let e1 = equality_test.Music.country;
|
|
let d1 = equality_test.Music.country;
|
|
let s1 = "hello";
|
|
let s2 = "";
|
|
let i1 = 3;
|
|
let i2 = 0;
|
|
let l1 = core.List.new(3);
|
|
let b1 = new equality_test._Norman.new();
|
|
minitest.expect(e1 === s1, false);
|
|
minitest.expect(e1 === s2, false);
|
|
minitest.expect(e1 === i1, false);
|
|
minitest.expect(e1 === i2, false);
|
|
minitest.expect(e1 === l1, false);
|
|
minitest.expect(e1 === b1, false);
|
|
minitest.expect(s1 === e1, false);
|
|
minitest.expect(s2 === e1, false);
|
|
minitest.expect(i1 === e1, false);
|
|
minitest.expect(i2 === e1, false);
|
|
minitest.expect(l1[dartx['==']](e1), false);
|
|
minitest.expect(b1['=='](e1), false);
|
|
minitest.expect(dart.equals(d1, s1), false);
|
|
minitest.expect(dart.equals(d1, s2), false);
|
|
minitest.expect(dart.equals(d1, i1), false);
|
|
minitest.expect(dart.equals(d1, i2), false);
|
|
minitest.expect(dart.equals(d1, l1), false);
|
|
minitest.expect(dart.equals(d1, b1), false);
|
|
minitest.expect(s1 === d1, false);
|
|
minitest.expect(s2 === d1, false);
|
|
minitest.expect(i1 === d1, false);
|
|
minitest.expect(i2 === d1, false);
|
|
minitest.expect(l1[dartx['==']](d1), false);
|
|
minitest.expect(b1['=='](d1), false);
|
|
}, VoidToNull()));
|
|
}, VoidToNull()));
|
|
minitest.group('String equality', dart.fn(() => {
|
|
minitest.test('Equal string/string (nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(core.String)("The");
|
|
let e2 = equality_test.hideNull(core.String)("Band");
|
|
let d1 = equality_test.hideNull(core.String)("The");
|
|
let d2 = equality_test.hideNull(core.String)("Band");
|
|
let o1 = equality_test.hideNull(core.Object)("The");
|
|
let o2 = equality_test.hideNull(core.Object)("Band");
|
|
minitest.expect(e1 == e1, true);
|
|
minitest.expect(core.identical(e1, d1), true);
|
|
minitest.expect(core.identical(e1, o1), true);
|
|
minitest.expect(e1 == e2, false);
|
|
minitest.expect(core.identical(e1, o2), false);
|
|
minitest.expect(core.identical(e1, d2), false);
|
|
minitest.expect(e1 == e2, false);
|
|
minitest.expect(dart.equals(d1, e1), true);
|
|
minitest.expect(dart.equals(d1, d1), true);
|
|
minitest.expect(dart.equals(d1, o1), true);
|
|
minitest.expect(dart.equals(d1, e2), false);
|
|
minitest.expect(dart.equals(d1, d2), false);
|
|
minitest.expect(dart.equals(d1, o2), false);
|
|
minitest.expect(dart.equals(o1, e1), true);
|
|
minitest.expect(dart.equals(o1, d1), true);
|
|
minitest.expect(dart.equals(o1, o1), true);
|
|
minitest.expect(dart.equals(o1, e2), false);
|
|
minitest.expect(dart.equals(o1, d2), false);
|
|
minitest.expect(dart.equals(o1, o2), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal string/string (non-null)', dart.fn(() => {
|
|
let e1 = "The";
|
|
let e2 = "Band";
|
|
let d1 = "The";
|
|
let d2 = "Band";
|
|
let o1 = "The";
|
|
let o2 = "Band";
|
|
minitest.expect(e1 === e1, true);
|
|
minitest.expect(e1 === d1, true);
|
|
minitest.expect(e1 === o1, true);
|
|
minitest.expect(e1 === e2, false);
|
|
minitest.expect(e1 === o2, false);
|
|
minitest.expect(e1 === d2, false);
|
|
minitest.expect(e1 === e2, false);
|
|
minitest.expect(dart.equals(d1, e1), true);
|
|
minitest.expect(dart.equals(d1, d1), true);
|
|
minitest.expect(dart.equals(d1, o1), true);
|
|
minitest.expect(dart.equals(d1, e2), false);
|
|
minitest.expect(dart.equals(d1, d2), false);
|
|
minitest.expect(dart.equals(d1, o2), false);
|
|
minitest.expect(dart.equals(o1, e1), true);
|
|
minitest.expect(dart.equals(o1, d1), true);
|
|
minitest.expect(dart.equals(o1, o1), true);
|
|
minitest.expect(dart.equals(o1, e2), false);
|
|
minitest.expect(dart.equals(o1, d2), false);
|
|
minitest.expect(dart.equals(o1, o2), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal string/other (static, nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(core.String)("The");
|
|
let s1 = equality_test.hideNull(core.String)("hello");
|
|
let s2 = equality_test.hideNull(core.String)("");
|
|
let i1 = equality_test.hideNull(core.int)(3);
|
|
let i2 = equality_test.hideNull(core.int)(0);
|
|
let l1 = equality_test.hideNull(core.List)(core.List.new(3));
|
|
let b1 = equality_test.hideNull(equality_test.BluesBrother)(new equality_test._Norman.new());
|
|
minitest.expect(e1 == s1, false);
|
|
minitest.expect(e1 == s2, false);
|
|
minitest.expect(core.identical(e1, i1), false);
|
|
minitest.expect(core.identical(e1, i2), false);
|
|
minitest.expect(core.identical(e1, l1), false);
|
|
minitest.expect(core.identical(e1, b1), false);
|
|
minitest.expect(s1 == e1, false);
|
|
minitest.expect(s2 == e1, false);
|
|
minitest.expect(core.identical(i1, e1), false);
|
|
minitest.expect(core.identical(i2, e1), false);
|
|
minitest.expect(dart.equals(l1, e1), false);
|
|
minitest.expect(dart.equals(b1, e1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal string/other (static, non-null)', dart.fn(() => {
|
|
let e1 = "The";
|
|
let s1 = "hello";
|
|
let s2 = "";
|
|
let i1 = 3;
|
|
let i2 = 0;
|
|
let l1 = core.List.new(3);
|
|
let b1 = new equality_test._Norman.new();
|
|
minitest.expect(e1 === s1, false);
|
|
minitest.expect(e1 === s2, false);
|
|
minitest.expect(e1 === i1, false);
|
|
minitest.expect(e1 === i2, false);
|
|
minitest.expect(e1 === l1, false);
|
|
minitest.expect(e1 === b1, false);
|
|
minitest.expect(s1 === e1, false);
|
|
minitest.expect(s2 === e1, false);
|
|
minitest.expect(i1 === e1, false);
|
|
minitest.expect(i2 === e1, false);
|
|
minitest.expect(l1[dartx['==']](e1), false);
|
|
minitest.expect(b1['=='](e1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal string/other (dynamic, nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(core.String)("The");
|
|
let d1 = equality_test.hideNull(core.String)("The");
|
|
let s1 = equality_test.hideNull(core.String)("hello");
|
|
let s2 = equality_test.hideNull(core.String)("");
|
|
let i1 = equality_test.hideNull(core.int)(3);
|
|
let i2 = equality_test.hideNull(core.int)(0);
|
|
let l1 = equality_test.hideNull(core.List)(core.List.new(3));
|
|
let b1 = equality_test.hideNull(equality_test._Norman)(new equality_test._Norman.new());
|
|
minitest.expect(core.identical(e1, s1), false);
|
|
minitest.expect(core.identical(e1, s2), false);
|
|
minitest.expect(core.identical(e1, i1), false);
|
|
minitest.expect(core.identical(e1, i2), false);
|
|
minitest.expect(core.identical(e1, l1), false);
|
|
minitest.expect(core.identical(e1, b1), false);
|
|
minitest.expect(dart.equals(s1, e1), false);
|
|
minitest.expect(dart.equals(s2, e1), false);
|
|
minitest.expect(dart.equals(i1, e1), false);
|
|
minitest.expect(dart.equals(i2, e1), false);
|
|
minitest.expect(dart.equals(l1, e1), false);
|
|
minitest.expect(dart.equals(b1, e1), false);
|
|
minitest.expect(dart.equals(d1, s1), false);
|
|
minitest.expect(dart.equals(d1, s2), false);
|
|
minitest.expect(dart.equals(d1, i1), false);
|
|
minitest.expect(dart.equals(d1, i2), false);
|
|
minitest.expect(dart.equals(d1, l1), false);
|
|
minitest.expect(dart.equals(d1, b1), false);
|
|
minitest.expect(dart.equals(s1, d1), false);
|
|
minitest.expect(dart.equals(s2, d1), false);
|
|
minitest.expect(dart.equals(i1, d1), false);
|
|
minitest.expect(dart.equals(i2, d1), false);
|
|
minitest.expect(dart.equals(l1, d1), false);
|
|
minitest.expect(dart.equals(b1, d1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal string/other (dynamic, non-null)', dart.fn(() => {
|
|
let e1 = "The";
|
|
let d1 = "The";
|
|
let s1 = "hello";
|
|
let s2 = "";
|
|
let i1 = 3;
|
|
let i2 = 0;
|
|
let l1 = core.List.new(3);
|
|
let b1 = new equality_test._Norman.new();
|
|
minitest.expect(e1 === s1, false);
|
|
minitest.expect(e1 === s2, false);
|
|
minitest.expect(e1 === i1, false);
|
|
minitest.expect(e1 === i2, false);
|
|
minitest.expect(e1 === l1, false);
|
|
minitest.expect(e1 === b1, false);
|
|
minitest.expect(s1 === e1, false);
|
|
minitest.expect(s2 === e1, false);
|
|
minitest.expect(i1 === e1, false);
|
|
minitest.expect(i2 === e1, false);
|
|
minitest.expect(l1[dartx['==']](e1), false);
|
|
minitest.expect(b1['=='](e1), false);
|
|
minitest.expect(dart.equals(d1, s1), false);
|
|
minitest.expect(dart.equals(d1, s2), false);
|
|
minitest.expect(dart.equals(d1, i1), false);
|
|
minitest.expect(dart.equals(d1, i2), false);
|
|
minitest.expect(dart.equals(d1, l1), false);
|
|
minitest.expect(dart.equals(d1, b1), false);
|
|
minitest.expect(s1 === d1, false);
|
|
minitest.expect(s2 === d1, false);
|
|
minitest.expect(i1 === d1, false);
|
|
minitest.expect(i2 === d1, false);
|
|
minitest.expect(l1[dartx['==']](d1), false);
|
|
minitest.expect(b1['=='](d1), false);
|
|
}, VoidToNull()));
|
|
}, VoidToNull()));
|
|
minitest.group('Boolean equality', dart.fn(() => {
|
|
minitest.test('Equal bool/bool (nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(core.bool)(true);
|
|
let e2 = equality_test.hideNull(core.bool)(false);
|
|
let d1 = equality_test.hideNull(core.bool)(true);
|
|
let d2 = equality_test.hideNull(core.bool)(false);
|
|
let o1 = equality_test.hideNull(core.Object)(true);
|
|
let o2 = equality_test.hideNull(core.Object)(false);
|
|
minitest.expect(e1 == e1, true);
|
|
minitest.expect(core.identical(e1, d1), true);
|
|
minitest.expect(core.identical(e1, o1), true);
|
|
minitest.expect(e1 == e2, false);
|
|
minitest.expect(core.identical(e1, o2), false);
|
|
minitest.expect(core.identical(e1, d2), false);
|
|
minitest.expect(e1 == e2, false);
|
|
minitest.expect(dart.equals(d1, e1), true);
|
|
minitest.expect(dart.equals(d1, d1), true);
|
|
minitest.expect(dart.equals(d1, o1), true);
|
|
minitest.expect(dart.equals(d1, e2), false);
|
|
minitest.expect(dart.equals(d1, d2), false);
|
|
minitest.expect(dart.equals(d1, o2), false);
|
|
minitest.expect(dart.equals(o1, e1), true);
|
|
minitest.expect(dart.equals(o1, d1), true);
|
|
minitest.expect(dart.equals(o1, o1), true);
|
|
minitest.expect(dart.equals(o1, e2), false);
|
|
minitest.expect(dart.equals(o1, d2), false);
|
|
minitest.expect(dart.equals(o1, o2), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal bool/bool (non-null)', dart.fn(() => {
|
|
let e1 = true;
|
|
let e2 = false;
|
|
let d1 = true;
|
|
let d2 = false;
|
|
let o1 = true;
|
|
let o2 = false;
|
|
minitest.expect(e1 === e1, true);
|
|
minitest.expect(e1 === d1, true);
|
|
minitest.expect(e1 === o1, true);
|
|
minitest.expect(e1 === e2, false);
|
|
minitest.expect(e1 === o2, false);
|
|
minitest.expect(e1 === d2, false);
|
|
minitest.expect(e1 === e2, false);
|
|
minitest.expect(dart.equals(d1, e1), true);
|
|
minitest.expect(dart.equals(d1, d1), true);
|
|
minitest.expect(dart.equals(d1, o1), true);
|
|
minitest.expect(dart.equals(d1, e2), false);
|
|
minitest.expect(dart.equals(d1, d2), false);
|
|
minitest.expect(dart.equals(d1, o2), false);
|
|
minitest.expect(dart.equals(o1, e1), true);
|
|
minitest.expect(dart.equals(o1, d1), true);
|
|
minitest.expect(dart.equals(o1, o1), true);
|
|
minitest.expect(dart.equals(o1, e2), false);
|
|
minitest.expect(dart.equals(o1, d2), false);
|
|
minitest.expect(dart.equals(o1, o2), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal bool/other (static, nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(core.bool)(true);
|
|
let s1 = equality_test.hideNull(core.String)("hello");
|
|
let s2 = equality_test.hideNull(core.String)("");
|
|
let i1 = equality_test.hideNull(core.int)(3);
|
|
let i2 = equality_test.hideNull(core.int)(0);
|
|
let l1 = equality_test.hideNull(core.List)(core.List.new(3));
|
|
let b1 = equality_test.hideNull(equality_test.BluesBrother)(new equality_test._Norman.new());
|
|
minitest.expect(core.identical(e1, s1), false);
|
|
minitest.expect(core.identical(e1, s2), false);
|
|
minitest.expect(core.identical(e1, i1), false);
|
|
minitest.expect(core.identical(e1, i2), false);
|
|
minitest.expect(core.identical(e1, l1), false);
|
|
minitest.expect(core.identical(e1, b1), false);
|
|
minitest.expect(core.identical(s1, e1), false);
|
|
minitest.expect(core.identical(s2, e1), false);
|
|
minitest.expect(core.identical(i1, e1), false);
|
|
minitest.expect(core.identical(i2, e1), false);
|
|
minitest.expect(dart.equals(l1, e1), false);
|
|
minitest.expect(dart.equals(b1, e1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal bool/other (static, non-null)', dart.fn(() => {
|
|
let e1 = true;
|
|
let s1 = "hello";
|
|
let s2 = "";
|
|
let i1 = 3;
|
|
let i2 = 0;
|
|
let l1 = core.List.new(3);
|
|
let b1 = new equality_test._Norman.new();
|
|
minitest.expect(e1 === s1, false);
|
|
minitest.expect(e1 === s2, false);
|
|
minitest.expect(e1 === i1, false);
|
|
minitest.expect(e1 === i2, false);
|
|
minitest.expect(e1 === l1, false);
|
|
minitest.expect(e1 === b1, false);
|
|
minitest.expect(s1 === e1, false);
|
|
minitest.expect(s2 === e1, false);
|
|
minitest.expect(i1 === e1, false);
|
|
minitest.expect(i2 === e1, false);
|
|
minitest.expect(l1[dartx['==']](e1), false);
|
|
minitest.expect(b1['=='](e1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal bool/other (dynamic, nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(core.bool)(true);
|
|
let d1 = equality_test.hideNull(core.bool)(true);
|
|
let s1 = equality_test.hideNull(core.String)("hello");
|
|
let s2 = equality_test.hideNull(core.String)("");
|
|
let i1 = equality_test.hideNull(core.int)(3);
|
|
let i2 = equality_test.hideNull(core.int)(0);
|
|
let l1 = equality_test.hideNull(core.List)(core.List.new(3));
|
|
let b1 = equality_test.hideNull(equality_test._Norman)(new equality_test._Norman.new());
|
|
minitest.expect(core.identical(e1, s1), false);
|
|
minitest.expect(core.identical(e1, s2), false);
|
|
minitest.expect(core.identical(e1, i1), false);
|
|
minitest.expect(core.identical(e1, i2), false);
|
|
minitest.expect(core.identical(e1, l1), false);
|
|
minitest.expect(core.identical(e1, b1), false);
|
|
minitest.expect(dart.equals(s1, e1), false);
|
|
minitest.expect(dart.equals(s2, e1), false);
|
|
minitest.expect(dart.equals(i1, e1), false);
|
|
minitest.expect(dart.equals(i2, e1), false);
|
|
minitest.expect(dart.equals(l1, e1), false);
|
|
minitest.expect(dart.equals(b1, e1), false);
|
|
minitest.expect(dart.equals(d1, s1), false);
|
|
minitest.expect(dart.equals(d1, s2), false);
|
|
minitest.expect(dart.equals(d1, i1), false);
|
|
minitest.expect(dart.equals(d1, i2), false);
|
|
minitest.expect(dart.equals(d1, l1), false);
|
|
minitest.expect(dart.equals(d1, b1), false);
|
|
minitest.expect(dart.equals(s1, d1), false);
|
|
minitest.expect(dart.equals(s2, d1), false);
|
|
minitest.expect(dart.equals(i1, d1), false);
|
|
minitest.expect(dart.equals(i2, d1), false);
|
|
minitest.expect(dart.equals(l1, d1), false);
|
|
minitest.expect(dart.equals(b1, d1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal bool/other (dynamic, non-null)', dart.fn(() => {
|
|
let e1 = true;
|
|
let d1 = true;
|
|
let s1 = "hello";
|
|
let s2 = "";
|
|
let i1 = 3;
|
|
let i2 = 0;
|
|
let l1 = core.List.new(3);
|
|
let b1 = new equality_test._Norman.new();
|
|
minitest.expect(e1 === s1, false);
|
|
minitest.expect(e1 === s2, false);
|
|
minitest.expect(e1 === i1, false);
|
|
minitest.expect(e1 === i2, false);
|
|
minitest.expect(e1 === l1, false);
|
|
minitest.expect(e1 === b1, false);
|
|
minitest.expect(s1 === e1, false);
|
|
minitest.expect(s2 === e1, false);
|
|
minitest.expect(i1 === e1, false);
|
|
minitest.expect(i2 === e1, false);
|
|
minitest.expect(l1[dartx['==']](e1), false);
|
|
minitest.expect(b1['=='](e1), false);
|
|
minitest.expect(dart.equals(d1, s1), false);
|
|
minitest.expect(dart.equals(d1, s2), false);
|
|
minitest.expect(dart.equals(d1, i1), false);
|
|
minitest.expect(dart.equals(d1, i2), false);
|
|
minitest.expect(dart.equals(d1, l1), false);
|
|
minitest.expect(dart.equals(d1, b1), false);
|
|
minitest.expect(s1 === d1, false);
|
|
minitest.expect(s2 === d1, false);
|
|
minitest.expect(i1 === d1, false);
|
|
minitest.expect(i2 === d1, false);
|
|
minitest.expect(l1[dartx['==']](d1), false);
|
|
minitest.expect(b1['=='](d1), false);
|
|
}, VoidToNull()));
|
|
}, VoidToNull()));
|
|
minitest.group('String equality', dart.fn(() => {
|
|
minitest.test('Equal string/string (nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(core.String)("The");
|
|
let e2 = equality_test.hideNull(core.String)("Band");
|
|
let d1 = equality_test.hideNull(core.String)("The");
|
|
let d2 = equality_test.hideNull(core.String)("Band");
|
|
let o1 = equality_test.hideNull(core.Object)("The");
|
|
let o2 = equality_test.hideNull(core.Object)("Band");
|
|
minitest.expect(e1 == e1, true);
|
|
minitest.expect(core.identical(e1, d1), true);
|
|
minitest.expect(core.identical(e1, o1), true);
|
|
minitest.expect(e1 == e2, false);
|
|
minitest.expect(core.identical(e1, o2), false);
|
|
minitest.expect(core.identical(e1, d2), false);
|
|
minitest.expect(e1 == e2, false);
|
|
minitest.expect(dart.equals(d1, e1), true);
|
|
minitest.expect(dart.equals(d1, d1), true);
|
|
minitest.expect(dart.equals(d1, o1), true);
|
|
minitest.expect(dart.equals(d1, e2), false);
|
|
minitest.expect(dart.equals(d1, d2), false);
|
|
minitest.expect(dart.equals(d1, o2), false);
|
|
minitest.expect(dart.equals(o1, e1), true);
|
|
minitest.expect(dart.equals(o1, d1), true);
|
|
minitest.expect(dart.equals(o1, o1), true);
|
|
minitest.expect(dart.equals(o1, e2), false);
|
|
minitest.expect(dart.equals(o1, d2), false);
|
|
minitest.expect(dart.equals(o1, o2), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal string/string (non-null)', dart.fn(() => {
|
|
let e1 = "The";
|
|
let e2 = "Band";
|
|
let d1 = "The";
|
|
let d2 = "Band";
|
|
let o1 = "The";
|
|
let o2 = "Band";
|
|
minitest.expect(e1 === e1, true);
|
|
minitest.expect(e1 === d1, true);
|
|
minitest.expect(e1 === o1, true);
|
|
minitest.expect(e1 === e2, false);
|
|
minitest.expect(e1 === o2, false);
|
|
minitest.expect(e1 === d2, false);
|
|
minitest.expect(e1 === e2, false);
|
|
minitest.expect(dart.equals(d1, e1), true);
|
|
minitest.expect(dart.equals(d1, d1), true);
|
|
minitest.expect(dart.equals(d1, o1), true);
|
|
minitest.expect(dart.equals(d1, e2), false);
|
|
minitest.expect(dart.equals(d1, d2), false);
|
|
minitest.expect(dart.equals(d1, o2), false);
|
|
minitest.expect(dart.equals(o1, e1), true);
|
|
minitest.expect(dart.equals(o1, d1), true);
|
|
minitest.expect(dart.equals(o1, o1), true);
|
|
minitest.expect(dart.equals(o1, e2), false);
|
|
minitest.expect(dart.equals(o1, d2), false);
|
|
minitest.expect(dart.equals(o1, o2), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal string/other (static, nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(core.String)("The");
|
|
let s1 = equality_test.hideNull(core.String)("hello");
|
|
let s2 = equality_test.hideNull(core.String)("");
|
|
let i1 = equality_test.hideNull(core.int)(3);
|
|
let i2 = equality_test.hideNull(core.int)(0);
|
|
let l1 = equality_test.hideNull(core.List)(core.List.new(3));
|
|
let b1 = equality_test.hideNull(equality_test.BluesBrother)(new equality_test._Norman.new());
|
|
minitest.expect(e1 == s1, false);
|
|
minitest.expect(e1 == s2, false);
|
|
minitest.expect(core.identical(e1, i1), false);
|
|
minitest.expect(core.identical(e1, i2), false);
|
|
minitest.expect(core.identical(e1, l1), false);
|
|
minitest.expect(core.identical(e1, b1), false);
|
|
minitest.expect(s1 == e1, false);
|
|
minitest.expect(s2 == e1, false);
|
|
minitest.expect(core.identical(i1, e1), false);
|
|
minitest.expect(core.identical(i2, e1), false);
|
|
minitest.expect(dart.equals(l1, e1), false);
|
|
minitest.expect(dart.equals(b1, e1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal string/other (static, non-null)', dart.fn(() => {
|
|
let e1 = "The";
|
|
let s1 = "hello";
|
|
let s2 = "";
|
|
let i1 = 3;
|
|
let i2 = 0;
|
|
let l1 = core.List.new(3);
|
|
let b1 = new equality_test._Norman.new();
|
|
minitest.expect(e1 === s1, false);
|
|
minitest.expect(e1 === s2, false);
|
|
minitest.expect(e1 === i1, false);
|
|
minitest.expect(e1 === i2, false);
|
|
minitest.expect(e1 === l1, false);
|
|
minitest.expect(e1 === b1, false);
|
|
minitest.expect(s1 === e1, false);
|
|
minitest.expect(s2 === e1, false);
|
|
minitest.expect(i1 === e1, false);
|
|
minitest.expect(i2 === e1, false);
|
|
minitest.expect(l1[dartx['==']](e1), false);
|
|
minitest.expect(b1['=='](e1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal string/other (dynamic, nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(core.String)("The");
|
|
let d1 = equality_test.hideNull(core.String)("The");
|
|
let s1 = equality_test.hideNull(core.String)("hello");
|
|
let s2 = equality_test.hideNull(core.String)("");
|
|
let i1 = equality_test.hideNull(core.int)(3);
|
|
let i2 = equality_test.hideNull(core.int)(0);
|
|
let l1 = equality_test.hideNull(core.List)(core.List.new(3));
|
|
let b1 = equality_test.hideNull(equality_test._Norman)(new equality_test._Norman.new());
|
|
minitest.expect(core.identical(e1, s1), false);
|
|
minitest.expect(core.identical(e1, s2), false);
|
|
minitest.expect(core.identical(e1, i1), false);
|
|
minitest.expect(core.identical(e1, i2), false);
|
|
minitest.expect(core.identical(e1, l1), false);
|
|
minitest.expect(core.identical(e1, b1), false);
|
|
minitest.expect(dart.equals(s1, e1), false);
|
|
minitest.expect(dart.equals(s2, e1), false);
|
|
minitest.expect(dart.equals(i1, e1), false);
|
|
minitest.expect(dart.equals(i2, e1), false);
|
|
minitest.expect(dart.equals(l1, e1), false);
|
|
minitest.expect(dart.equals(b1, e1), false);
|
|
minitest.expect(dart.equals(d1, s1), false);
|
|
minitest.expect(dart.equals(d1, s2), false);
|
|
minitest.expect(dart.equals(d1, i1), false);
|
|
minitest.expect(dart.equals(d1, i2), false);
|
|
minitest.expect(dart.equals(d1, l1), false);
|
|
minitest.expect(dart.equals(d1, b1), false);
|
|
minitest.expect(dart.equals(s1, d1), false);
|
|
minitest.expect(dart.equals(s2, d1), false);
|
|
minitest.expect(dart.equals(i1, d1), false);
|
|
minitest.expect(dart.equals(i2, d1), false);
|
|
minitest.expect(dart.equals(l1, d1), false);
|
|
minitest.expect(dart.equals(b1, d1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal string/other (dynamic, non-null)', dart.fn(() => {
|
|
let e1 = "The";
|
|
let d1 = "The";
|
|
let s1 = "hello";
|
|
let s2 = "";
|
|
let i1 = 3;
|
|
let i2 = 0;
|
|
let l1 = core.List.new(3);
|
|
let b1 = new equality_test._Norman.new();
|
|
minitest.expect(e1 === s1, false);
|
|
minitest.expect(e1 === s2, false);
|
|
minitest.expect(e1 === i1, false);
|
|
minitest.expect(e1 === i2, false);
|
|
minitest.expect(e1 === l1, false);
|
|
minitest.expect(e1 === b1, false);
|
|
minitest.expect(s1 === e1, false);
|
|
minitest.expect(s2 === e1, false);
|
|
minitest.expect(i1 === e1, false);
|
|
minitest.expect(i2 === e1, false);
|
|
minitest.expect(l1[dartx['==']](e1), false);
|
|
minitest.expect(b1['=='](e1), false);
|
|
minitest.expect(dart.equals(d1, s1), false);
|
|
minitest.expect(dart.equals(d1, s2), false);
|
|
minitest.expect(dart.equals(d1, i1), false);
|
|
minitest.expect(dart.equals(d1, i2), false);
|
|
minitest.expect(dart.equals(d1, l1), false);
|
|
minitest.expect(dart.equals(d1, b1), false);
|
|
minitest.expect(s1 === d1, false);
|
|
minitest.expect(s2 === d1, false);
|
|
minitest.expect(i1 === d1, false);
|
|
minitest.expect(i2 === d1, false);
|
|
minitest.expect(l1[dartx['==']](d1), false);
|
|
minitest.expect(b1['=='](d1), false);
|
|
}, VoidToNull()));
|
|
}, VoidToNull()));
|
|
minitest.group('Number equality', dart.fn(() => {
|
|
minitest.test('Equal int/int (nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(core.int)(11);
|
|
let e2 = equality_test.hideNull(core.int)(12);
|
|
let d1 = equality_test.hideNull(core.int)(11);
|
|
let d2 = equality_test.hideNull(core.int)(12);
|
|
let o1 = equality_test.hideNull(core.Object)(11);
|
|
let o2 = equality_test.hideNull(core.Object)(12);
|
|
minitest.expect(e1 == e1, true);
|
|
minitest.expect(core.identical(e1, d1), true);
|
|
minitest.expect(core.identical(e1, o1), true);
|
|
minitest.expect(e1 == e2, false);
|
|
minitest.expect(core.identical(e1, o2), false);
|
|
minitest.expect(core.identical(e1, d2), false);
|
|
minitest.expect(e1 == e2, false);
|
|
minitest.expect(dart.equals(d1, e1), true);
|
|
minitest.expect(dart.equals(d1, d1), true);
|
|
minitest.expect(dart.equals(d1, o1), true);
|
|
minitest.expect(dart.equals(d1, e2), false);
|
|
minitest.expect(dart.equals(d1, d2), false);
|
|
minitest.expect(dart.equals(d1, o2), false);
|
|
minitest.expect(dart.equals(o1, e1), true);
|
|
minitest.expect(dart.equals(o1, d1), true);
|
|
minitest.expect(dart.equals(o1, o1), true);
|
|
minitest.expect(dart.equals(o1, e2), false);
|
|
minitest.expect(dart.equals(o1, d2), false);
|
|
minitest.expect(dart.equals(o1, o2), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal int/int (non-null)', dart.fn(() => {
|
|
let e1 = 11;
|
|
let e2 = 12;
|
|
let d1 = 11;
|
|
let d2 = 12;
|
|
let o1 = 11;
|
|
let o2 = 12;
|
|
minitest.expect(e1 === e1, true);
|
|
minitest.expect(e1 === d1, true);
|
|
minitest.expect(e1 === o1, true);
|
|
minitest.expect(e1 === e2, false);
|
|
minitest.expect(e1 === o2, false);
|
|
minitest.expect(e1 === d2, false);
|
|
minitest.expect(e1 === e2, false);
|
|
minitest.expect(dart.equals(d1, e1), true);
|
|
minitest.expect(dart.equals(d1, d1), true);
|
|
minitest.expect(dart.equals(d1, o1), true);
|
|
minitest.expect(dart.equals(d1, e2), false);
|
|
minitest.expect(dart.equals(d1, d2), false);
|
|
minitest.expect(dart.equals(d1, o2), false);
|
|
minitest.expect(dart.equals(o1, e1), true);
|
|
minitest.expect(dart.equals(o1, d1), true);
|
|
minitest.expect(dart.equals(o1, o1), true);
|
|
minitest.expect(dart.equals(o1, e2), false);
|
|
minitest.expect(dart.equals(o1, d2), false);
|
|
minitest.expect(dart.equals(o1, o2), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal int/other (static, nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(core.int)(11);
|
|
let s1 = equality_test.hideNull(core.String)("hello");
|
|
let s2 = equality_test.hideNull(core.String)("");
|
|
let i1 = equality_test.hideNull(core.int)(3);
|
|
let i2 = equality_test.hideNull(core.int)(0);
|
|
let l1 = equality_test.hideNull(core.List)(core.List.new(3));
|
|
let b1 = equality_test.hideNull(equality_test.BluesBrother)(new equality_test._Norman.new());
|
|
minitest.expect(core.identical(e1, s1), false);
|
|
minitest.expect(core.identical(e1, s2), false);
|
|
minitest.expect(e1 == i1, false);
|
|
minitest.expect(e1 == i2, false);
|
|
minitest.expect(core.identical(e1, l1), false);
|
|
minitest.expect(core.identical(e1, b1), false);
|
|
minitest.expect(core.identical(s1, e1), false);
|
|
minitest.expect(core.identical(s2, e1), false);
|
|
minitest.expect(i1 == e1, false);
|
|
minitest.expect(i2 == e1, false);
|
|
minitest.expect(dart.equals(l1, e1), false);
|
|
minitest.expect(dart.equals(b1, e1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal int/other (static, non-null)', dart.fn(() => {
|
|
let e1 = 11;
|
|
let s1 = "hello";
|
|
let s2 = "";
|
|
let i1 = 3;
|
|
let i2 = 0;
|
|
let l1 = core.List.new(3);
|
|
let b1 = new equality_test._Norman.new();
|
|
minitest.expect(e1 === s1, false);
|
|
minitest.expect(e1 === s2, false);
|
|
minitest.expect(e1 === i1, false);
|
|
minitest.expect(e1 === i2, false);
|
|
minitest.expect(e1 === l1, false);
|
|
minitest.expect(e1 === b1, false);
|
|
minitest.expect(s1 === e1, false);
|
|
minitest.expect(s2 === e1, false);
|
|
minitest.expect(i1 === e1, false);
|
|
minitest.expect(i2 === e1, false);
|
|
minitest.expect(l1[dartx['==']](e1), false);
|
|
minitest.expect(b1['=='](e1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal int/other (dynamic, nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(core.int)(11);
|
|
let d1 = equality_test.hideNull(core.int)(11);
|
|
let s1 = equality_test.hideNull(core.String)("hello");
|
|
let s2 = equality_test.hideNull(core.String)("");
|
|
let i1 = equality_test.hideNull(core.int)(3);
|
|
let i2 = equality_test.hideNull(core.int)(0);
|
|
let l1 = equality_test.hideNull(core.List)(core.List.new(3));
|
|
let b1 = equality_test.hideNull(equality_test._Norman)(new equality_test._Norman.new());
|
|
minitest.expect(core.identical(e1, s1), false);
|
|
minitest.expect(core.identical(e1, s2), false);
|
|
minitest.expect(core.identical(e1, i1), false);
|
|
minitest.expect(core.identical(e1, i2), false);
|
|
minitest.expect(core.identical(e1, l1), false);
|
|
minitest.expect(core.identical(e1, b1), false);
|
|
minitest.expect(dart.equals(s1, e1), false);
|
|
minitest.expect(dart.equals(s2, e1), false);
|
|
minitest.expect(dart.equals(i1, e1), false);
|
|
minitest.expect(dart.equals(i2, e1), false);
|
|
minitest.expect(dart.equals(l1, e1), false);
|
|
minitest.expect(dart.equals(b1, e1), false);
|
|
minitest.expect(dart.equals(d1, s1), false);
|
|
minitest.expect(dart.equals(d1, s2), false);
|
|
minitest.expect(dart.equals(d1, i1), false);
|
|
minitest.expect(dart.equals(d1, i2), false);
|
|
minitest.expect(dart.equals(d1, l1), false);
|
|
minitest.expect(dart.equals(d1, b1), false);
|
|
minitest.expect(dart.equals(s1, d1), false);
|
|
minitest.expect(dart.equals(s2, d1), false);
|
|
minitest.expect(dart.equals(i1, d1), false);
|
|
minitest.expect(dart.equals(i2, d1), false);
|
|
minitest.expect(dart.equals(l1, d1), false);
|
|
minitest.expect(dart.equals(b1, d1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal int/other (dynamic, non-null)', dart.fn(() => {
|
|
let e1 = 11;
|
|
let d1 = 11;
|
|
let s1 = "hello";
|
|
let s2 = "";
|
|
let i1 = 3;
|
|
let i2 = 0;
|
|
let l1 = core.List.new(3);
|
|
let b1 = new equality_test._Norman.new();
|
|
minitest.expect(e1 === s1, false);
|
|
minitest.expect(e1 === s2, false);
|
|
minitest.expect(e1 === i1, false);
|
|
minitest.expect(e1 === i2, false);
|
|
minitest.expect(e1 === l1, false);
|
|
minitest.expect(e1 === b1, false);
|
|
minitest.expect(s1 === e1, false);
|
|
minitest.expect(s2 === e1, false);
|
|
minitest.expect(i1 === e1, false);
|
|
minitest.expect(i2 === e1, false);
|
|
minitest.expect(l1[dartx['==']](e1), false);
|
|
minitest.expect(b1['=='](e1), false);
|
|
minitest.expect(dart.equals(d1, s1), false);
|
|
minitest.expect(dart.equals(d1, s2), false);
|
|
minitest.expect(dart.equals(d1, i1), false);
|
|
minitest.expect(dart.equals(d1, i2), false);
|
|
minitest.expect(dart.equals(d1, l1), false);
|
|
minitest.expect(dart.equals(d1, b1), false);
|
|
minitest.expect(s1 === d1, false);
|
|
minitest.expect(s2 === d1, false);
|
|
minitest.expect(i1 === d1, false);
|
|
minitest.expect(i2 === d1, false);
|
|
minitest.expect(l1[dartx['==']](d1), false);
|
|
minitest.expect(b1['=='](d1), false);
|
|
}, VoidToNull()));
|
|
}, VoidToNull()));
|
|
minitest.group('Object equality', dart.fn(() => {
|
|
minitest.test('Equal object/object (nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(equality_test._Jake)(new equality_test._Jake.new());
|
|
let e2 = equality_test.hideNull(equality_test._Elwood)(new equality_test._Elwood.new());
|
|
let d1 = equality_test.hideNull(equality_test._Jake)(e1);
|
|
let d2 = equality_test.hideNull(equality_test._Elwood)(new equality_test._Elwood.new());
|
|
let o1 = equality_test.hideNull(core.Object)(e1);
|
|
let o2 = equality_test.hideNull(core.Object)(new equality_test._Elwood.new());
|
|
minitest.expect(dart.equals(e1, e1), true);
|
|
minitest.expect(dart.equals(e1, d1), true);
|
|
minitest.expect(dart.equals(e1, o1), true);
|
|
minitest.expect(dart.equals(e1, e2), false);
|
|
minitest.expect(dart.equals(e1, o2), false);
|
|
minitest.expect(dart.equals(e1, d2), false);
|
|
minitest.expect(dart.equals(e1, e2), false);
|
|
minitest.expect(dart.equals(d1, e1), true);
|
|
minitest.expect(dart.equals(d1, d1), true);
|
|
minitest.expect(dart.equals(d1, o1), true);
|
|
minitest.expect(dart.equals(d1, e2), false);
|
|
minitest.expect(dart.equals(d1, d2), false);
|
|
minitest.expect(dart.equals(d1, o2), false);
|
|
minitest.expect(dart.equals(o1, e1), true);
|
|
minitest.expect(dart.equals(o1, d1), true);
|
|
minitest.expect(dart.equals(o1, o1), true);
|
|
minitest.expect(dart.equals(o1, e2), false);
|
|
minitest.expect(dart.equals(o1, d2), false);
|
|
minitest.expect(dart.equals(o1, o2), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal object/object (non-null)', dart.fn(() => {
|
|
let e1 = new equality_test._Jake.new();
|
|
let e2 = new equality_test._Elwood.new();
|
|
let d1 = e1;
|
|
let d2 = new equality_test._Elwood.new();
|
|
let o1 = e1;
|
|
let o2 = new equality_test._Elwood.new();
|
|
minitest.expect(e1['=='](e1), true);
|
|
minitest.expect(e1['=='](d1), true);
|
|
minitest.expect(e1['=='](o1), true);
|
|
minitest.expect(e1['=='](e2), false);
|
|
minitest.expect(e1['=='](o2), false);
|
|
minitest.expect(e1['=='](d2), false);
|
|
minitest.expect(e1['=='](e2), false);
|
|
minitest.expect(dart.equals(d1, e1), true);
|
|
minitest.expect(dart.equals(d1, d1), true);
|
|
minitest.expect(dart.equals(d1, o1), true);
|
|
minitest.expect(dart.equals(d1, e2), false);
|
|
minitest.expect(dart.equals(d1, d2), false);
|
|
minitest.expect(dart.equals(d1, o2), false);
|
|
minitest.expect(dart.equals(o1, e1), true);
|
|
minitest.expect(dart.equals(o1, d1), true);
|
|
minitest.expect(dart.equals(o1, o1), true);
|
|
minitest.expect(dart.equals(o1, e2), false);
|
|
minitest.expect(dart.equals(o1, d2), false);
|
|
minitest.expect(dart.equals(o1, o2), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal object/other (static, nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(equality_test._Jake)(new equality_test._Jake.new());
|
|
let s1 = equality_test.hideNull(core.String)("hello");
|
|
let s2 = equality_test.hideNull(core.String)("");
|
|
let i1 = equality_test.hideNull(core.int)(3);
|
|
let i2 = equality_test.hideNull(core.int)(0);
|
|
let l1 = equality_test.hideNull(core.List)(core.List.new(3));
|
|
let b1 = equality_test.hideNull(equality_test.BluesBrother)(new equality_test._Norman.new());
|
|
minitest.expect(dart.equals(e1, s1), false);
|
|
minitest.expect(dart.equals(e1, s2), false);
|
|
minitest.expect(dart.equals(e1, i1), false);
|
|
minitest.expect(dart.equals(e1, i2), false);
|
|
minitest.expect(dart.equals(e1, l1), false);
|
|
minitest.expect(dart.equals(e1, b1), false);
|
|
minitest.expect(core.identical(s1, e1), false);
|
|
minitest.expect(core.identical(s2, e1), false);
|
|
minitest.expect(core.identical(i1, e1), false);
|
|
minitest.expect(core.identical(i2, e1), false);
|
|
minitest.expect(dart.equals(l1, e1), false);
|
|
minitest.expect(dart.equals(b1, e1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal object/other (static, non-null)', dart.fn(() => {
|
|
let e1 = new equality_test._Jake.new();
|
|
let s1 = "hello";
|
|
let s2 = "";
|
|
let i1 = 3;
|
|
let i2 = 0;
|
|
let l1 = core.List.new(3);
|
|
let b1 = new equality_test._Norman.new();
|
|
minitest.expect(e1['=='](s1), false);
|
|
minitest.expect(e1['=='](s2), false);
|
|
minitest.expect(e1['=='](i1), false);
|
|
minitest.expect(e1['=='](i2), false);
|
|
minitest.expect(e1['=='](l1), false);
|
|
minitest.expect(e1['=='](b1), false);
|
|
minitest.expect(s1 === e1, false);
|
|
minitest.expect(s2 === e1, false);
|
|
minitest.expect(i1 === e1, false);
|
|
minitest.expect(i2 === e1, false);
|
|
minitest.expect(l1[dartx['==']](e1), false);
|
|
minitest.expect(b1['=='](e1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal object/other (dynamic, nullable)', dart.fn(() => {
|
|
let e1 = equality_test.hideNull(equality_test._Jake)(new equality_test._Jake.new());
|
|
let d1 = equality_test.hideNull(equality_test._Jake)(new equality_test._Jake.new());
|
|
let s1 = equality_test.hideNull(core.String)("hello");
|
|
let s2 = equality_test.hideNull(core.String)("");
|
|
let i1 = equality_test.hideNull(core.int)(3);
|
|
let i2 = equality_test.hideNull(core.int)(0);
|
|
let l1 = equality_test.hideNull(core.List)(core.List.new(3));
|
|
let b1 = equality_test.hideNull(equality_test._Norman)(new equality_test._Norman.new());
|
|
minitest.expect(dart.equals(e1, s1), false);
|
|
minitest.expect(dart.equals(e1, s2), false);
|
|
minitest.expect(dart.equals(e1, i1), false);
|
|
minitest.expect(dart.equals(e1, i2), false);
|
|
minitest.expect(dart.equals(e1, l1), false);
|
|
minitest.expect(dart.equals(e1, b1), false);
|
|
minitest.expect(dart.equals(s1, e1), false);
|
|
minitest.expect(dart.equals(s2, e1), false);
|
|
minitest.expect(dart.equals(i1, e1), false);
|
|
minitest.expect(dart.equals(i2, e1), false);
|
|
minitest.expect(dart.equals(l1, e1), false);
|
|
minitest.expect(dart.equals(b1, e1), false);
|
|
minitest.expect(dart.equals(d1, s1), false);
|
|
minitest.expect(dart.equals(d1, s2), false);
|
|
minitest.expect(dart.equals(d1, i1), false);
|
|
minitest.expect(dart.equals(d1, i2), false);
|
|
minitest.expect(dart.equals(d1, l1), false);
|
|
minitest.expect(dart.equals(d1, b1), false);
|
|
minitest.expect(dart.equals(s1, d1), false);
|
|
minitest.expect(dart.equals(s2, d1), false);
|
|
minitest.expect(dart.equals(i1, d1), false);
|
|
minitest.expect(dart.equals(i2, d1), false);
|
|
minitest.expect(dart.equals(l1, d1), false);
|
|
minitest.expect(dart.equals(b1, d1), false);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal object/other (dynamic, non-null)', dart.fn(() => {
|
|
let e1 = new equality_test._Jake.new();
|
|
let d1 = new equality_test._Jake.new();
|
|
let s1 = "hello";
|
|
let s2 = "";
|
|
let i1 = 3;
|
|
let i2 = 0;
|
|
let l1 = core.List.new(3);
|
|
let b1 = new equality_test._Norman.new();
|
|
minitest.expect(e1['=='](s1), false);
|
|
minitest.expect(e1['=='](s2), false);
|
|
minitest.expect(e1['=='](i1), false);
|
|
minitest.expect(e1['=='](i2), false);
|
|
minitest.expect(e1['=='](l1), false);
|
|
minitest.expect(e1['=='](b1), false);
|
|
minitest.expect(s1 === e1, false);
|
|
minitest.expect(s2 === e1, false);
|
|
minitest.expect(i1 === e1, false);
|
|
minitest.expect(i2 === e1, false);
|
|
minitest.expect(l1[dartx['==']](e1), false);
|
|
minitest.expect(b1['=='](e1), false);
|
|
minitest.expect(dart.equals(d1, s1), false);
|
|
minitest.expect(dart.equals(d1, s2), false);
|
|
minitest.expect(dart.equals(d1, i1), false);
|
|
minitest.expect(dart.equals(d1, i2), false);
|
|
minitest.expect(dart.equals(d1, l1), false);
|
|
minitest.expect(dart.equals(d1, b1), false);
|
|
minitest.expect(s1 === d1, false);
|
|
minitest.expect(s2 === d1, false);
|
|
minitest.expect(i1 === d1, false);
|
|
minitest.expect(i2 === d1, false);
|
|
minitest.expect(l1[dartx['==']](d1), false);
|
|
minitest.expect(b1['=='](d1), false);
|
|
}, VoidToNull()));
|
|
}, VoidToNull()));
|
|
minitest.group('Null/undefined equality', dart.fn(() => {
|
|
minitest.test('Equal object/other (static, null)', dart.fn(() => {
|
|
let n = equality_test.hideNull(equality_test.BluesBrother)(null);
|
|
let u1 = equality_test.getUndefined(core.String)();
|
|
let u2 = equality_test.getUndefined(core.int)();
|
|
let u3 = equality_test.getUndefined(core.bool)();
|
|
let u4 = equality_test.getUndefined(core.List)();
|
|
minitest.expect(dart.equals(n, n), true);
|
|
minitest.expect(dart.equals(n, u1), true);
|
|
minitest.expect(dart.equals(n, u2), true);
|
|
minitest.expect(dart.equals(n, u3), true);
|
|
minitest.expect(dart.equals(n, u4), true);
|
|
minitest.expect(core.identical(u1, n), true);
|
|
minitest.expect(core.identical(u2, n), true);
|
|
minitest.expect(core.identical(u3, n), true);
|
|
minitest.expect(dart.equals(u4, n), true);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal String/other (static, null)', dart.fn(() => {
|
|
let u1 = equality_test.getUndefined(equality_test.BluesBrother)();
|
|
let n = equality_test.hideNull(core.String)(null);
|
|
let u2 = equality_test.getUndefined(core.int)();
|
|
let u3 = equality_test.getUndefined(core.bool)();
|
|
let u4 = equality_test.getUndefined(core.List)();
|
|
minitest.expect(n == n, true);
|
|
minitest.expect(core.identical(n, u1), true);
|
|
minitest.expect(core.identical(n, u2), true);
|
|
minitest.expect(core.identical(n, u3), true);
|
|
minitest.expect(core.identical(n, u4), true);
|
|
minitest.expect(dart.equals(u1, n), true);
|
|
minitest.expect(core.identical(u2, n), true);
|
|
minitest.expect(core.identical(u3, n), true);
|
|
minitest.expect(dart.equals(u4, n), true);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal int/other (static, null)', dart.fn(() => {
|
|
let u1 = equality_test.getUndefined(equality_test.BluesBrother)();
|
|
let u2 = equality_test.getUndefined(core.String)();
|
|
let n = equality_test.hideNull(core.int)(null);
|
|
let u3 = equality_test.getUndefined(core.bool)();
|
|
let u4 = equality_test.getUndefined(core.List)();
|
|
minitest.expect(n == n, true);
|
|
minitest.expect(core.identical(n, u1), true);
|
|
minitest.expect(core.identical(n, u2), true);
|
|
minitest.expect(core.identical(n, u3), true);
|
|
minitest.expect(core.identical(n, u4), true);
|
|
minitest.expect(dart.equals(u1, n), true);
|
|
minitest.expect(core.identical(u2, n), true);
|
|
minitest.expect(core.identical(u3, n), true);
|
|
minitest.expect(dart.equals(u4, n), true);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal bool/other (static, null)', dart.fn(() => {
|
|
let u1 = equality_test.getUndefined(equality_test.BluesBrother)();
|
|
let u2 = equality_test.getUndefined(core.String)();
|
|
let u3 = equality_test.getUndefined(core.int)();
|
|
let n = equality_test.hideNull(core.bool)(null);
|
|
let u4 = equality_test.getUndefined(core.List)();
|
|
minitest.expect(n == n, true);
|
|
minitest.expect(core.identical(n, u1), true);
|
|
minitest.expect(core.identical(n, u2), true);
|
|
minitest.expect(core.identical(n, u3), true);
|
|
minitest.expect(core.identical(n, u4), true);
|
|
minitest.expect(dart.equals(u1, n), true);
|
|
minitest.expect(core.identical(u2, n), true);
|
|
minitest.expect(core.identical(u3, n), true);
|
|
minitest.expect(dart.equals(u4, n), true);
|
|
}, VoidToNull()));
|
|
minitest.test('Equal List/other (static, null)', dart.fn(() => {
|
|
let u1 = equality_test.getUndefined(equality_test.BluesBrother)();
|
|
let u2 = equality_test.getUndefined(core.String)();
|
|
let u3 = equality_test.getUndefined(core.int)();
|
|
let u4 = equality_test.getUndefined(core.bool)();
|
|
let n = equality_test.hideNull(core.List)(null);
|
|
minitest.expect(dart.equals(n, n), true);
|
|
minitest.expect(dart.equals(n, u1), true);
|
|
minitest.expect(dart.equals(n, u2), true);
|
|
minitest.expect(dart.equals(n, u3), true);
|
|
minitest.expect(dart.equals(n, u4), true);
|
|
minitest.expect(dart.equals(u1, n), true);
|
|
minitest.expect(core.identical(u2, n), true);
|
|
minitest.expect(core.identical(u3, n), true);
|
|
minitest.expect(core.identical(u4, n), true);
|
|
}, VoidToNull()));
|
|
}, VoidToNull()));
|
|
};
|
|
dart.fn(equality_test.main, VoidTodynamic());
|
|
dart.trackLibraries("equality_test", {
|
|
"equality_test.dart": equality_test
|
|
}, null);
|
|
// Exports:
|
|
return {
|
|
equality_test: equality_test
|
|
};
|
|
});
|