dart-sdk/tests/corelib_2/hashcode_test.dart
Kevin Moore c347b0ed16 Migrate test block 9 to Dart 2.0
Deleted http_resource_test – the associated classes no longer exist
Deleted int_fromEnvironment3 - validated type semantics
Tweaked hash_set_type_check – made it very simple.

Also tweaked some analyzer hints

R=rnystrom@google.com

Review-Url: https://codereview.chromium.org/2990623002 .
2017-07-25 16:43:08 -07:00

48 lines
1.4 KiB
Dart

// Copyright (c) 2013, 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/expect.dart";
class Override {
int hash;
int get superHash => super.hashCode;
int get hashCode => hash;
int foo() => hash; // Just some function that can be closurized.
bool operator ==(Object other) => other is Override && other.hash == hash;
}
int bar() => 42; // Some global function.
main() {
var o = new Object();
var hash = o.hashCode;
// Doesn't change.
Expect.equals(hash, o.hashCode);
Expect.equals(hash, identityHashCode(o));
var c = new Override();
int identityHash = c.superHash;
hash = (identityHash == 42) ? 37 : 42;
c.hash = hash;
Expect.equals(hash, c.hashCode);
Expect.equals(identityHash, identityHashCode(c));
// These classes don't override hashCode.
var samples = [0, 0x10000000, 1.5, -0, null, true, false, const Object()];
for (var v in samples) {
print(v);
Expect.equals(v.hashCode, identityHashCode(v));
}
// These do, or might do, but we can still use hashCodeOf and get the same
// result each time.
samples = ["string", "", (x) => 42, c.foo, bar];
for (var v in samples) {
print(v);
Expect.equals(v.hashCode, v.hashCode);
Expect.equals(identityHashCode(v), identityHashCode(v));
}
}