| Index: pkg/dev_compiler/test/codegen/identity_test.dart
|
| diff --git a/pkg/dev_compiler/test/codegen/identity_test.dart b/pkg/dev_compiler/test/codegen/identity_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0c42bc640c7dce94a40c115f1a5bb0d4b8ff0de3
|
| --- /dev/null
|
| +++ b/pkg/dev_compiler/test/codegen/identity_test.dart
|
| @@ -0,0 +1,1279 @@
|
| +// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +import 'package:expect/minitest.dart';
|
| +
|
| +/// Both kinds.
|
| +enum Music { country, western }
|
| +
|
| +class BluesBrother {}
|
| +
|
| +// This class does not override object equality
|
| +class _Jake extends BluesBrother {}
|
| +
|
| +/// This class overrides object equality
|
| +class _Elwood extends BluesBrother {
|
| + bool operator ==(Object other) {
|
| + return (other is _Elwood);
|
| + }
|
| +}
|
| +
|
| +/// Mock BluesBrother
|
| +class _Norman extends BluesBrother {}
|
| +
|
| +/// Hide nullability from the simple minded null analysis
|
| +T hideNull<T>(T x) => x;
|
| +
|
| +/// Generate undefined at a type
|
| +T getUndefined<T>() => (new List(1))[0];
|
| +
|
| +main() {
|
| + group('Enum identity', () {
|
| + // Test identity of two enums, various types, nullable
|
| + test('Identical enum/enum (nullable)', () {
|
| + Music e1 = hideNull(Music.country);
|
| + Music e2 = hideNull(Music.western);
|
| + dynamic d1 = hideNull(Music.country);
|
| + dynamic d2 = hideNull(Music.western);
|
| + Object o1 = hideNull(Music.country);
|
| + Object o2 = hideNull(Music.western);
|
| + expect(identical(e1, e1), true);
|
| + expect(identical(e1, d1), true);
|
| + expect(identical(e1, o1), true);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(e1, o2), false);
|
| + expect(identical(e1, d2), false);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(d1, e1), true);
|
| + expect(identical(d1, d1), true);
|
| + expect(identical(d1, o1), true);
|
| + expect(identical(d1, e2), false);
|
| + expect(identical(d1, d2), false);
|
| + expect(identical(d1, o2), false);
|
| + expect(identical(o1, e1), true);
|
| + expect(identical(o1, d1), true);
|
| + expect(identical(o1, o1), true);
|
| + expect(identical(o1, e2), false);
|
| + expect(identical(o1, d2), false);
|
| + expect(identical(o1, o2), false);
|
| + });
|
| +
|
| + // Test identity of two enums, various types, non-nullable
|
| + test('Identical enum/enum (non-null)', () {
|
| + Music e1 = Music.country;
|
| + Music e2 = Music.western;
|
| + dynamic d1 = Music.country;
|
| + dynamic d2 = Music.western;
|
| + Object o1 = Music.country;
|
| + Object o2 = Music.western;
|
| + expect(identical(e1, e1), true);
|
| + expect(identical(e1, d1), true);
|
| + expect(identical(e1, o1), true);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(e1, o2), false);
|
| + expect(identical(e1, d2), false);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(d1, e1), true);
|
| + expect(identical(d1, d1), true);
|
| + expect(identical(d1, o1), true);
|
| + expect(identical(d1, e2), false);
|
| + expect(identical(d1, d2), false);
|
| + expect(identical(d1, o2), false);
|
| + expect(identical(o1, e1), true);
|
| + expect(identical(o1, d1), true);
|
| + expect(identical(o1, o1), true);
|
| + expect(identical(o1, e2), false);
|
| + expect(identical(o1, d2), false);
|
| + expect(identical(o1, o2), false);
|
| + });
|
| +
|
| + // Test identity of enum and other types (static, nullable)
|
| + test('Identical enum/other (static, nullable)', () {
|
| + Music e1 = hideNull(Music.country);
|
| + String s1 = hideNull("hello");
|
| + String s2 = hideNull("");
|
| + int i1 = hideNull(3);
|
| + int i2 = hideNull(0);
|
| + List l1 = hideNull(new List(3));
|
| + BluesBrother b1 = hideNull(new _Norman());
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| + });
|
| +
|
| + // Test identity of enum and other types (static, non-null)
|
| + test('Identical enum/other (static, non-null)', () {
|
| + Music e1 = Music.country;
|
| + String s1 = "hello";
|
| + String s2 = "";
|
| + int i1 = 3;
|
| + int i2 = 0;
|
| + List l1 = new List(3);
|
| + BluesBrother b1 = new _Norman();
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| + });
|
| +
|
| + // Test identity of enum and other types (dynamic, nullable)
|
| + test('Identical enum/other (dynamic, nullable)', () {
|
| + Music e1 = hideNull(Music.country);
|
| + dynamic d1 = hideNull(Music.country);
|
| + dynamic s1 = hideNull("hello");
|
| + dynamic s2 = hideNull("");
|
| + dynamic i1 = hideNull(3);
|
| + dynamic i2 = hideNull(0);
|
| + dynamic l1 = hideNull(new List(3));
|
| + dynamic b1 = hideNull(new _Norman());
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| +
|
| + expect(identical(d1, s1), false);
|
| + expect(identical(d1, s2), false);
|
| + expect(identical(d1, i1), false);
|
| + expect(identical(d1, i2), false);
|
| + expect(identical(d1, l1), false);
|
| + expect(identical(d1, b1), false);
|
| +
|
| + expect(identical(s1, d1), false);
|
| + expect(identical(s2, d1), false);
|
| + expect(identical(i1, d1), false);
|
| + expect(identical(i2, d1), false);
|
| + expect(identical(l1, d1), false);
|
| + expect(identical(b1, d1), false);
|
| + });
|
| +
|
| + // Test identity of enum and other types (dynamic, non-null)
|
| + test('Identical enum/other (dynamic, non-null)', () {
|
| + Music e1 = Music.country;
|
| + dynamic d1 = Music.country;
|
| + String s1 = "hello";
|
| + String s2 = "";
|
| + int i1 = 3;
|
| + int i2 = 0;
|
| + List l1 = new List(3);
|
| + BluesBrother b1 = new _Norman();
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| +
|
| + expect(identical(d1, s1), false);
|
| + expect(identical(d1, s2), false);
|
| + expect(identical(d1, i1), false);
|
| + expect(identical(d1, i2), false);
|
| + expect(identical(d1, l1), false);
|
| + expect(identical(d1, b1), false);
|
| +
|
| + expect(identical(s1, d1), false);
|
| + expect(identical(s2, d1), false);
|
| + expect(identical(i1, d1), false);
|
| + expect(identical(i2, d1), false);
|
| + expect(identical(l1, d1), false);
|
| + expect(identical(b1, d1), false);
|
| + });
|
| + });
|
| +
|
| + group('String identity', () {
|
| + // Test identity of two strings, various types, nullable
|
| + test('Identical string/string (nullable)', () {
|
| + String e1 = hideNull("The");
|
| + String e2 = hideNull("Band");
|
| + dynamic d1 = hideNull("The");
|
| + dynamic d2 = hideNull("Band");
|
| + Object o1 = hideNull("The");
|
| + Object o2 = hideNull("Band");
|
| + expect(identical(e1, e1), true);
|
| + expect(identical(e1, d1), true);
|
| + expect(identical(e1, o1), true);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(e1, o2), false);
|
| + expect(identical(e1, d2), false);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(d1, e1), true);
|
| + expect(identical(d1, d1), true);
|
| + expect(identical(d1, o1), true);
|
| + expect(identical(d1, e2), false);
|
| + expect(identical(d1, d2), false);
|
| + expect(identical(d1, o2), false);
|
| + expect(identical(o1, e1), true);
|
| + expect(identical(o1, d1), true);
|
| + expect(identical(o1, o1), true);
|
| + expect(identical(o1, e2), false);
|
| + expect(identical(o1, d2), false);
|
| + expect(identical(o1, o2), false);
|
| + });
|
| +
|
| + // Test identity of two strings, various types, non-nullable
|
| + test('Identical string/string (non-null)', () {
|
| + String e1 = "The";
|
| + String e2 = "Band";
|
| + dynamic d1 = "The";
|
| + dynamic d2 = "Band";
|
| + Object o1 = "The";
|
| + Object o2 = "Band";
|
| + expect(identical(e1, e1), true);
|
| + expect(identical(e1, d1), true);
|
| + expect(identical(e1, o1), true);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(e1, o2), false);
|
| + expect(identical(e1, d2), false);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(d1, e1), true);
|
| + expect(identical(d1, d1), true);
|
| + expect(identical(d1, o1), true);
|
| + expect(identical(d1, e2), false);
|
| + expect(identical(d1, d2), false);
|
| + expect(identical(d1, o2), false);
|
| + expect(identical(o1, e1), true);
|
| + expect(identical(o1, d1), true);
|
| + expect(identical(o1, o1), true);
|
| + expect(identical(o1, e2), false);
|
| + expect(identical(o1, d2), false);
|
| + expect(identical(o1, o2), false);
|
| + });
|
| +
|
| + // Test identity of string and other types (static, nullable)
|
| + test('Identical string/other (static, nullable)', () {
|
| + String e1 = hideNull("The");
|
| + String s1 = hideNull("hello");
|
| + String s2 = hideNull("");
|
| + int i1 = hideNull(3);
|
| + int i2 = hideNull(0);
|
| + List l1 = hideNull(new List(3));
|
| + BluesBrother b1 = hideNull(new _Norman());
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| + });
|
| +
|
| + // Test identity of string and other types (static, non-null)
|
| + test('Identical string/other (static, non-null)', () {
|
| + String e1 = "The";
|
| + String s1 = "hello";
|
| + String s2 = "";
|
| + int i1 = 3;
|
| + int i2 = 0;
|
| + List l1 = new List(3);
|
| + BluesBrother b1 = new _Norman();
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| + });
|
| +
|
| + // Test identity of string and other types (dynamic, nullable)
|
| + test('Identical string/other (dynamic, nullable)', () {
|
| + String e1 = hideNull("The");
|
| + dynamic d1 = hideNull("The");
|
| + dynamic s1 = hideNull("hello");
|
| + dynamic s2 = hideNull("");
|
| + dynamic i1 = hideNull(3);
|
| + dynamic i2 = hideNull(0);
|
| + dynamic l1 = hideNull(new List(3));
|
| + dynamic b1 = hideNull(new _Norman());
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| +
|
| + expect(identical(d1, s1), false);
|
| + expect(identical(d1, s2), false);
|
| + expect(identical(d1, i1), false);
|
| + expect(identical(d1, i2), false);
|
| + expect(identical(d1, l1), false);
|
| + expect(identical(d1, b1), false);
|
| +
|
| + expect(identical(s1, d1), false);
|
| + expect(identical(s2, d1), false);
|
| + expect(identical(i1, d1), false);
|
| + expect(identical(i2, d1), false);
|
| + expect(identical(l1, d1), false);
|
| + expect(identical(b1, d1), false);
|
| + });
|
| +
|
| + // Test identity of string and other types (dynamic, non-null)
|
| + test('Identical string/other (dynamic, non-null)', () {
|
| + String e1 = "The";
|
| + dynamic d1 = "The";
|
| + String s1 = "hello";
|
| + String s2 = "";
|
| + int i1 = 3;
|
| + int i2 = 0;
|
| + List l1 = new List(3);
|
| + BluesBrother b1 = new _Norman();
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| +
|
| + expect(identical(d1, s1), false);
|
| + expect(identical(d1, s2), false);
|
| + expect(identical(d1, i1), false);
|
| + expect(identical(d1, i2), false);
|
| + expect(identical(d1, l1), false);
|
| + expect(identical(d1, b1), false);
|
| +
|
| + expect(identical(s1, d1), false);
|
| + expect(identical(s2, d1), false);
|
| + expect(identical(i1, d1), false);
|
| + expect(identical(i2, d1), false);
|
| + expect(identical(l1, d1), false);
|
| + expect(identical(b1, d1), false);
|
| + });
|
| + });
|
| +
|
| + group('Boolean identity', () {
|
| + // Test identity of two bools, various types, nullable
|
| + test('Identical bool/bool (nullable)', () {
|
| + bool e1 = hideNull(true);
|
| + bool e2 = hideNull(false);
|
| + dynamic d1 = hideNull(true);
|
| + dynamic d2 = hideNull(false);
|
| + Object o1 = hideNull(true);
|
| + Object o2 = hideNull(false);
|
| + expect(identical(e1, e1), true);
|
| + expect(identical(e1, d1), true);
|
| + expect(identical(e1, o1), true);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(e1, o2), false);
|
| + expect(identical(e1, d2), false);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(d1, e1), true);
|
| + expect(identical(d1, d1), true);
|
| + expect(identical(d1, o1), true);
|
| + expect(identical(d1, e2), false);
|
| + expect(identical(d1, d2), false);
|
| + expect(identical(d1, o2), false);
|
| + expect(identical(o1, e1), true);
|
| + expect(identical(o1, d1), true);
|
| + expect(identical(o1, o1), true);
|
| + expect(identical(o1, e2), false);
|
| + expect(identical(o1, d2), false);
|
| + expect(identical(o1, o2), false);
|
| + });
|
| +
|
| + // Test identity of two bools, various types, non-nullable
|
| + test('Identical bool/bool (non-null)', () {
|
| + bool e1 = true;
|
| + bool e2 = false;
|
| + dynamic d1 = true;
|
| + dynamic d2 = false;
|
| + Object o1 = true;
|
| + Object o2 = false;
|
| + expect(identical(e1, e1), true);
|
| + expect(identical(e1, d1), true);
|
| + expect(identical(e1, o1), true);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(e1, o2), false);
|
| + expect(identical(e1, d2), false);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(d1, e1), true);
|
| + expect(identical(d1, d1), true);
|
| + expect(identical(d1, o1), true);
|
| + expect(identical(d1, e2), false);
|
| + expect(identical(d1, d2), false);
|
| + expect(identical(d1, o2), false);
|
| + expect(identical(o1, e1), true);
|
| + expect(identical(o1, d1), true);
|
| + expect(identical(o1, o1), true);
|
| + expect(identical(o1, e2), false);
|
| + expect(identical(o1, d2), false);
|
| + expect(identical(o1, o2), false);
|
| + });
|
| +
|
| + // Test identity of bool and other types (static, nullable)
|
| + test('Identical bool/other (static, nullable)', () {
|
| + bool e1 = hideNull(true);
|
| + String s1 = hideNull("hello");
|
| + String s2 = hideNull("");
|
| + int i1 = hideNull(3);
|
| + int i2 = hideNull(0);
|
| + List l1 = hideNull(new List(3));
|
| + BluesBrother b1 = hideNull(new _Norman());
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| + });
|
| +
|
| + // Test identity of bool and other types (static, non-null)
|
| + test('Identical bool/other (static, non-null)', () {
|
| + bool e1 = true;
|
| + String s1 = "hello";
|
| + String s2 = "";
|
| + int i1 = 3;
|
| + int i2 = 0;
|
| + List l1 = new List(3);
|
| + BluesBrother b1 = new _Norman();
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| + });
|
| +
|
| + // Test identity of bool and other types (dynamic, nullable)
|
| + test('Identical bool/other (dynamic, nullable)', () {
|
| + bool e1 = hideNull(true);
|
| + dynamic d1 = hideNull(true);
|
| + dynamic s1 = hideNull("hello");
|
| + dynamic s2 = hideNull("");
|
| + dynamic i1 = hideNull(3);
|
| + dynamic i2 = hideNull(0);
|
| + dynamic l1 = hideNull(new List(3));
|
| + dynamic b1 = hideNull(new _Norman());
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| +
|
| + expect(identical(d1, s1), false);
|
| + expect(identical(d1, s2), false);
|
| + expect(identical(d1, i1), false);
|
| + expect(identical(d1, i2), false);
|
| + expect(identical(d1, l1), false);
|
| + expect(identical(d1, b1), false);
|
| +
|
| + expect(identical(s1, d1), false);
|
| + expect(identical(s2, d1), false);
|
| + expect(identical(i1, d1), false);
|
| + expect(identical(i2, d1), false);
|
| + expect(identical(l1, d1), false);
|
| + expect(identical(b1, d1), false);
|
| + });
|
| +
|
| + // Test identity of bool and other types (dynamic, non-null)
|
| + test('Identical bool/other (dynamic, non-null)', () {
|
| + bool e1 = true;
|
| + dynamic d1 = true;
|
| + String s1 = "hello";
|
| + String s2 = "";
|
| + int i1 = 3;
|
| + int i2 = 0;
|
| + List l1 = new List(3);
|
| + BluesBrother b1 = new _Norman();
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| +
|
| + expect(identical(d1, s1), false);
|
| + expect(identical(d1, s2), false);
|
| + expect(identical(d1, i1), false);
|
| + expect(identical(d1, i2), false);
|
| + expect(identical(d1, l1), false);
|
| + expect(identical(d1, b1), false);
|
| +
|
| + expect(identical(s1, d1), false);
|
| + expect(identical(s2, d1), false);
|
| + expect(identical(i1, d1), false);
|
| + expect(identical(i2, d1), false);
|
| + expect(identical(l1, d1), false);
|
| + expect(identical(b1, d1), false);
|
| + });
|
| + });
|
| +
|
| + group('String identity', () {
|
| + // Test identity of two strings, various types, nullable
|
| + test('Identical string/string (nullable)', () {
|
| + String e1 = hideNull("The");
|
| + String e2 = hideNull("Band");
|
| + dynamic d1 = hideNull("The");
|
| + dynamic d2 = hideNull("Band");
|
| + Object o1 = hideNull("The");
|
| + Object o2 = hideNull("Band");
|
| + expect(identical(e1, e1), true);
|
| + expect(identical(e1, d1), true);
|
| + expect(identical(e1, o1), true);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(e1, o2), false);
|
| + expect(identical(e1, d2), false);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(d1, e1), true);
|
| + expect(identical(d1, d1), true);
|
| + expect(identical(d1, o1), true);
|
| + expect(identical(d1, e2), false);
|
| + expect(identical(d1, d2), false);
|
| + expect(identical(d1, o2), false);
|
| + expect(identical(o1, e1), true);
|
| + expect(identical(o1, d1), true);
|
| + expect(identical(o1, o1), true);
|
| + expect(identical(o1, e2), false);
|
| + expect(identical(o1, d2), false);
|
| + expect(identical(o1, o2), false);
|
| + });
|
| +
|
| + // Test identity of two strings, various types, non-nullable
|
| + test('Identical string/string (non-null)', () {
|
| + String e1 = "The";
|
| + String e2 = "Band";
|
| + dynamic d1 = "The";
|
| + dynamic d2 = "Band";
|
| + Object o1 = "The";
|
| + Object o2 = "Band";
|
| + expect(identical(e1, e1), true);
|
| + expect(identical(e1, d1), true);
|
| + expect(identical(e1, o1), true);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(e1, o2), false);
|
| + expect(identical(e1, d2), false);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(d1, e1), true);
|
| + expect(identical(d1, d1), true);
|
| + expect(identical(d1, o1), true);
|
| + expect(identical(d1, e2), false);
|
| + expect(identical(d1, d2), false);
|
| + expect(identical(d1, o2), false);
|
| + expect(identical(o1, e1), true);
|
| + expect(identical(o1, d1), true);
|
| + expect(identical(o1, o1), true);
|
| + expect(identical(o1, e2), false);
|
| + expect(identical(o1, d2), false);
|
| + expect(identical(o1, o2), false);
|
| + });
|
| +
|
| + // Test identity of string and other types (static, nullable)
|
| + test('Identical string/other (static, nullable)', () {
|
| + String e1 = hideNull("The");
|
| + String s1 = hideNull("hello");
|
| + String s2 = hideNull("");
|
| + int i1 = hideNull(3);
|
| + int i2 = hideNull(0);
|
| + List l1 = hideNull(new List(3));
|
| + BluesBrother b1 = hideNull(new _Norman());
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| + });
|
| +
|
| + // Test identity of string and other types (static, non-null)
|
| + test('Identical string/other (static, non-null)', () {
|
| + String e1 = "The";
|
| + String s1 = "hello";
|
| + String s2 = "";
|
| + int i1 = 3;
|
| + int i2 = 0;
|
| + List l1 = new List(3);
|
| + BluesBrother b1 = new _Norman();
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| + });
|
| +
|
| + // Test identity of string and other types (dynamic, nullable)
|
| + test('Identical string/other (dynamic, nullable)', () {
|
| + String e1 = hideNull("The");
|
| + dynamic d1 = hideNull("The");
|
| + dynamic s1 = hideNull("hello");
|
| + dynamic s2 = hideNull("");
|
| + dynamic i1 = hideNull(3);
|
| + dynamic i2 = hideNull(0);
|
| + dynamic l1 = hideNull(new List(3));
|
| + dynamic b1 = hideNull(new _Norman());
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| +
|
| + expect(identical(d1, s1), false);
|
| + expect(identical(d1, s2), false);
|
| + expect(identical(d1, i1), false);
|
| + expect(identical(d1, i2), false);
|
| + expect(identical(d1, l1), false);
|
| + expect(identical(d1, b1), false);
|
| +
|
| + expect(identical(s1, d1), false);
|
| + expect(identical(s2, d1), false);
|
| + expect(identical(i1, d1), false);
|
| + expect(identical(i2, d1), false);
|
| + expect(identical(l1, d1), false);
|
| + expect(identical(b1, d1), false);
|
| + });
|
| +
|
| + // Test identity of string and other types (dynamic, non-null)
|
| + test('Identical string/other (dynamic, non-null)', () {
|
| + String e1 = "The";
|
| + dynamic d1 = "The";
|
| + String s1 = "hello";
|
| + String s2 = "";
|
| + int i1 = 3;
|
| + int i2 = 0;
|
| + List l1 = new List(3);
|
| + BluesBrother b1 = new _Norman();
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| +
|
| + expect(identical(d1, s1), false);
|
| + expect(identical(d1, s2), false);
|
| + expect(identical(d1, i1), false);
|
| + expect(identical(d1, i2), false);
|
| + expect(identical(d1, l1), false);
|
| + expect(identical(d1, b1), false);
|
| +
|
| + expect(identical(s1, d1), false);
|
| + expect(identical(s2, d1), false);
|
| + expect(identical(i1, d1), false);
|
| + expect(identical(i2, d1), false);
|
| + expect(identical(l1, d1), false);
|
| + expect(identical(b1, d1), false);
|
| + });
|
| + });
|
| +
|
| + group('Number identity', () {
|
| + // Test identity of two ints, various types, nullable
|
| + test('Identical int/int (nullable)', () {
|
| + int e1 = hideNull(11);
|
| + int e2 = hideNull(12);
|
| + dynamic d1 = hideNull(11);
|
| + dynamic d2 = hideNull(12);
|
| + Object o1 = hideNull(11);
|
| + Object o2 = hideNull(12);
|
| + expect(identical(e1, e1), true);
|
| + expect(identical(e1, d1), true);
|
| + expect(identical(e1, o1), true);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(e1, o2), false);
|
| + expect(identical(e1, d2), false);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(d1, e1), true);
|
| + expect(identical(d1, d1), true);
|
| + expect(identical(d1, o1), true);
|
| + expect(identical(d1, e2), false);
|
| + expect(identical(d1, d2), false);
|
| + expect(identical(d1, o2), false);
|
| + expect(identical(o1, e1), true);
|
| + expect(identical(o1, d1), true);
|
| + expect(identical(o1, o1), true);
|
| + expect(identical(o1, e2), false);
|
| + expect(identical(o1, d2), false);
|
| + expect(identical(o1, o2), false);
|
| + });
|
| +
|
| + // Test identity of two ints, various types, non-nullable
|
| + test('Identical int/int (non-null)', () {
|
| + int e1 = 11;
|
| + int e2 = 12;
|
| + dynamic d1 = 11;
|
| + dynamic d2 = 12;
|
| + Object o1 = 11;
|
| + Object o2 = 12;
|
| + expect(identical(e1, e1), true);
|
| + expect(identical(e1, d1), true);
|
| + expect(identical(e1, o1), true);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(e1, o2), false);
|
| + expect(identical(e1, d2), false);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(d1, e1), true);
|
| + expect(identical(d1, d1), true);
|
| + expect(identical(d1, o1), true);
|
| + expect(identical(d1, e2), false);
|
| + expect(identical(d1, d2), false);
|
| + expect(identical(d1, o2), false);
|
| + expect(identical(o1, e1), true);
|
| + expect(identical(o1, d1), true);
|
| + expect(identical(o1, o1), true);
|
| + expect(identical(o1, e2), false);
|
| + expect(identical(o1, d2), false);
|
| + expect(identical(o1, o2), false);
|
| + });
|
| +
|
| + // Test identity of int and other types (static, nullable)
|
| + test('Identical int/other (static, nullable)', () {
|
| + int e1 = hideNull(11);
|
| + String s1 = hideNull("hello");
|
| + String s2 = hideNull("");
|
| + int i1 = hideNull(3);
|
| + int i2 = hideNull(0);
|
| + List l1 = hideNull(new List(3));
|
| + BluesBrother b1 = hideNull(new _Norman());
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| + });
|
| +
|
| + // Test identity of int and other types (static, non-null)
|
| + test('Identical int/other (static, non-null)', () {
|
| + int e1 = 11;
|
| + String s1 = "hello";
|
| + String s2 = "";
|
| + int i1 = 3;
|
| + int i2 = 0;
|
| + List l1 = new List(3);
|
| + BluesBrother b1 = new _Norman();
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| + });
|
| +
|
| + // Test identity of int and other types (dynamic, nullable)
|
| + test('Identical int/other (dynamic, nullable)', () {
|
| + int e1 = hideNull(11);
|
| + dynamic d1 = hideNull(11);
|
| + dynamic s1 = hideNull("hello");
|
| + dynamic s2 = hideNull("");
|
| + dynamic i1 = hideNull(3);
|
| + dynamic i2 = hideNull(0);
|
| + dynamic l1 = hideNull(new List(3));
|
| + dynamic b1 = hideNull(new _Norman());
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| +
|
| + expect(identical(d1, s1), false);
|
| + expect(identical(d1, s2), false);
|
| + expect(identical(d1, i1), false);
|
| + expect(identical(d1, i2), false);
|
| + expect(identical(d1, l1), false);
|
| + expect(identical(d1, b1), false);
|
| +
|
| + expect(identical(s1, d1), false);
|
| + expect(identical(s2, d1), false);
|
| + expect(identical(i1, d1), false);
|
| + expect(identical(i2, d1), false);
|
| + expect(identical(l1, d1), false);
|
| + expect(identical(b1, d1), false);
|
| + });
|
| +
|
| + // Test identity of int and other types (dynamic, non-null)
|
| + test('Identical int/other (dynamic, non-null)', () {
|
| + int e1 = 11;
|
| + dynamic d1 = 11;
|
| + String s1 = "hello";
|
| + String s2 = "";
|
| + int i1 = 3;
|
| + int i2 = 0;
|
| + List l1 = new List(3);
|
| + BluesBrother b1 = new _Norman();
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| +
|
| + expect(identical(d1, s1), false);
|
| + expect(identical(d1, s2), false);
|
| + expect(identical(d1, i1), false);
|
| + expect(identical(d1, i2), false);
|
| + expect(identical(d1, l1), false);
|
| + expect(identical(d1, b1), false);
|
| +
|
| + expect(identical(s1, d1), false);
|
| + expect(identical(s2, d1), false);
|
| + expect(identical(i1, d1), false);
|
| + expect(identical(i2, d1), false);
|
| + expect(identical(l1, d1), false);
|
| + expect(identical(b1, d1), false);
|
| + });
|
| + });
|
| +
|
| + group('Object identity', () {
|
| + // Test identity of two objects, various types, nullable
|
| + test('Identical object/object (nullable)', () {
|
| + _Jake e1 = hideNull(new _Jake());
|
| + _Elwood e2 = hideNull(new _Elwood());
|
| + dynamic d1 = hideNull(e1);
|
| + dynamic d2 = hideNull(new _Elwood());
|
| + Object o1 = hideNull(e1);
|
| + Object o2 = hideNull(new _Elwood());
|
| + expect(identical(e1, e1), true);
|
| + expect(identical(e1, d1), true);
|
| + expect(identical(e1, o1), true);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(e1, o2), false);
|
| + expect(identical(e1, d2), false);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(d1, e1), true);
|
| + expect(identical(d1, d1), true);
|
| + expect(identical(d1, o1), true);
|
| + expect(identical(d1, e2), false);
|
| + expect(identical(d1, d2), false);
|
| + expect(identical(d1, o2), false);
|
| + expect(identical(o1, e1), true);
|
| + expect(identical(o1, d1), true);
|
| + expect(identical(o1, o1), true);
|
| + expect(identical(o1, e2), false);
|
| + expect(identical(o1, d2), false);
|
| + expect(identical(o1, o2), false);
|
| + });
|
| +
|
| + // Test identity of two objects, various types, non-nullable
|
| + test('Identical object/object (non-null)', () {
|
| + _Jake e1 = new _Jake();
|
| + _Elwood e2 = new _Elwood();
|
| + dynamic d1 = e1;
|
| + dynamic d2 = new _Elwood();
|
| + Object o1 = e1;
|
| + Object o2 = new _Elwood();
|
| + expect(identical(e1, e1), true);
|
| + expect(identical(e1, d1), true);
|
| + expect(identical(e1, o1), true);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(e1, o2), false);
|
| + expect(identical(e1, d2), false);
|
| + expect(identical(e1, e2), false);
|
| + expect(identical(d1, e1), true);
|
| + expect(identical(d1, d1), true);
|
| + expect(identical(d1, o1), true);
|
| + expect(identical(d1, e2), false);
|
| + expect(identical(d1, d2), false);
|
| + expect(identical(d1, o2), false);
|
| + expect(identical(o1, e1), true);
|
| + expect(identical(o1, d1), true);
|
| + expect(identical(o1, o1), true);
|
| + expect(identical(o1, e2), false);
|
| + expect(identical(o1, d2), false);
|
| + expect(identical(o1, o2), false);
|
| + });
|
| +
|
| + // Test identity of object and other types (static, nullable)
|
| + test('Identical object/other (static, nullable)', () {
|
| + _Jake e1 = hideNull(new _Jake());
|
| + String s1 = hideNull("hello");
|
| + String s2 = hideNull("");
|
| + int i1 = hideNull(3);
|
| + int i2 = hideNull(0);
|
| + List l1 = hideNull(new List(3));
|
| + BluesBrother b1 = hideNull(new _Norman());
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| + });
|
| +
|
| + // Test identity of object and other types (static, non-null)
|
| + test('Identical object/other (static, non-null)', () {
|
| + _Jake e1 = new _Jake();
|
| + String s1 = "hello";
|
| + String s2 = "";
|
| + int i1 = 3;
|
| + int i2 = 0;
|
| + List l1 = new List(3);
|
| + BluesBrother b1 = new _Norman();
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| + });
|
| +
|
| + // Test identity of object and other types (dynamic, nullable)
|
| + test('Identical object/other (dynamic, nullable)', () {
|
| + _Jake e1 = hideNull(new _Jake());
|
| + dynamic d1 = hideNull(new _Jake());
|
| + dynamic s1 = hideNull("hello");
|
| + dynamic s2 = hideNull("");
|
| + dynamic i1 = hideNull(3);
|
| + dynamic i2 = hideNull(0);
|
| + dynamic l1 = hideNull(new List(3));
|
| + dynamic b1 = hideNull(new _Norman());
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| +
|
| + expect(identical(d1, s1), false);
|
| + expect(identical(d1, s2), false);
|
| + expect(identical(d1, i1), false);
|
| + expect(identical(d1, i2), false);
|
| + expect(identical(d1, l1), false);
|
| + expect(identical(d1, b1), false);
|
| +
|
| + expect(identical(s1, d1), false);
|
| + expect(identical(s2, d1), false);
|
| + expect(identical(i1, d1), false);
|
| + expect(identical(i2, d1), false);
|
| + expect(identical(l1, d1), false);
|
| + expect(identical(b1, d1), false);
|
| + });
|
| +
|
| + // Test identity of object and other types (dynamic, non-null)
|
| + test('Identical object/other (dynamic, non-null)', () {
|
| + _Jake e1 = new _Jake();
|
| + dynamic d1 = new _Jake();
|
| + String s1 = "hello";
|
| + String s2 = "";
|
| + int i1 = 3;
|
| + int i2 = 0;
|
| + List l1 = new List(3);
|
| + BluesBrother b1 = new _Norman();
|
| +
|
| + expect(identical(e1, s1), false);
|
| + expect(identical(e1, s2), false);
|
| + expect(identical(e1, i1), false);
|
| + expect(identical(e1, i2), false);
|
| + expect(identical(e1, l1), false);
|
| + expect(identical(e1, b1), false);
|
| +
|
| + expect(identical(s1, e1), false);
|
| + expect(identical(s2, e1), false);
|
| + expect(identical(i1, e1), false);
|
| + expect(identical(i2, e1), false);
|
| + expect(identical(l1, e1), false);
|
| + expect(identical(b1, e1), false);
|
| +
|
| + expect(identical(d1, s1), false);
|
| + expect(identical(d1, s2), false);
|
| + expect(identical(d1, i1), false);
|
| + expect(identical(d1, i2), false);
|
| + expect(identical(d1, l1), false);
|
| + expect(identical(d1, b1), false);
|
| +
|
| + expect(identical(s1, d1), false);
|
| + expect(identical(s2, d1), false);
|
| + expect(identical(i1, d1), false);
|
| + expect(identical(i2, d1), false);
|
| + expect(identical(l1, d1), false);
|
| + expect(identical(b1, d1), false);
|
| + });
|
| + });
|
| +
|
| + // Test that null receiver with undefined argument is handled correctly
|
| + group('Null/undefined identity', () {
|
| + // Test identity of null object and other types
|
| + test('Identical object/other (static, null)', () {
|
| + BluesBrother n = hideNull(null);
|
| + String u1 = getUndefined();
|
| + int u2 = getUndefined();
|
| + bool u3 = getUndefined();
|
| + List u4 = getUndefined();
|
| +
|
| + expect(identical(n, n), true);
|
| +
|
| + expect(identical(n, u1), true);
|
| + expect(identical(n, u2), true);
|
| + expect(identical(n, u3), true);
|
| + expect(identical(n, u4), true);
|
| +
|
| + expect(identical(u1, n), true);
|
| + expect(identical(u2, n), true);
|
| + expect(identical(u3, n), true);
|
| + expect(identical(u4, n), true);
|
| + });
|
| +
|
| + // Test identity of null string and other types
|
| + test('Identical String/other (static, null)', () {
|
| + BluesBrother u1 = getUndefined();
|
| + String n = hideNull(null);
|
| + int u2 = getUndefined();
|
| + bool u3 = getUndefined();
|
| + List u4 = getUndefined();
|
| +
|
| + expect(identical(n, n), true);
|
| +
|
| + expect(identical(n, u1), true);
|
| + expect(identical(n, u2), true);
|
| + expect(identical(n, u3), true);
|
| + expect(identical(n, u4), true);
|
| +
|
| + expect(identical(u1, n), true);
|
| + expect(identical(u2, n), true);
|
| + expect(identical(u3, n), true);
|
| + expect(identical(u4, n), true);
|
| + });
|
| +
|
| + // Test identity of null int and other types
|
| + test('Identical int/other (static, null)', () {
|
| + BluesBrother u1 = getUndefined();
|
| + String u2 = getUndefined();
|
| + int n = hideNull(null);
|
| + bool u3 = getUndefined();
|
| + List u4 = getUndefined();
|
| +
|
| + expect(identical(n, n), true);
|
| +
|
| + expect(identical(n, u1), true);
|
| + expect(identical(n, u2), true);
|
| + expect(identical(n, u3), true);
|
| + expect(identical(n, u4), true);
|
| +
|
| + expect(identical(u1, n), true);
|
| + expect(identical(u2, n), true);
|
| + expect(identical(u3, n), true);
|
| + expect(identical(u4, n), true);
|
| + });
|
| +
|
| + // Test identity of null bool and other types
|
| + test('Identical bool/other (static, null)', () {
|
| + BluesBrother u1 = getUndefined();
|
| + String u2 = getUndefined();
|
| + int u3 = getUndefined();
|
| + bool n = hideNull(null);
|
| + List u4 = getUndefined();
|
| +
|
| + expect(identical(n, n), true);
|
| +
|
| + expect(identical(n, u1), true);
|
| + expect(identical(n, u2), true);
|
| + expect(identical(n, u3), true);
|
| + expect(identical(n, u4), true);
|
| +
|
| + expect(identical(u1, n), true);
|
| + expect(identical(u2, n), true);
|
| + expect(identical(u3, n), true);
|
| + expect(identical(u4, n), true);
|
| + });
|
| +
|
| + // Test identity of null List and other types
|
| + test('Identical List/other (static, null)', () {
|
| + BluesBrother u1 = getUndefined();
|
| + String u2 = getUndefined();
|
| + int u3 = getUndefined();
|
| + bool u4 = getUndefined();
|
| + List n = hideNull(null);
|
| +
|
| + expect(identical(n, n), true);
|
| +
|
| + expect(identical(n, u1), true);
|
| + expect(identical(n, u2), true);
|
| + expect(identical(n, u3), true);
|
| + expect(identical(n, u4), true);
|
| +
|
| + expect(identical(u1, n), true);
|
| + expect(identical(u2, n), true);
|
| + expect(identical(u3, n), true);
|
| + expect(identical(u4, n), true);
|
| + });
|
| + });
|
| +}
|
|
|