Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Side by Side Diff: tests/language/savannah_test.dart

Issue 11191078: Make hashCode a getter and not a method. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Update status file with co19 issue number. Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 // Dart test using an identity hash. 4 // Dart test using an identity hash.
5 5
6 abstract class BigGame { 6 abstract class BigGame {
7 String get name; 7 String get name;
8 } 8 }
9 9
10 // Giraffe overrides hashCode and provides its own identity hash. 10 // Giraffe overrides hashCode and provides its own identity hash.
11 class Giraffe implements BigGame { 11 class Giraffe implements BigGame {
12 final String name; 12 final String name;
13 final int identityHash_; 13 final int identityHash_;
14 14
15 Giraffe(this.name) : identityHash_ = nextId() {} 15 Giraffe(this.name) : identityHash_ = nextId() {}
16 16
17 int hashCode() { 17 int get hashCode {
18 return identityHash_; 18 return identityHash_;
19 } 19 }
20 20
21 // Calculate identity hash for a giraffe. 21 // Calculate identity hash for a giraffe.
22 static int nextId_; 22 static int nextId_;
23 static int nextId() { 23 static int nextId() {
24 if (nextId_ == null) { 24 if (nextId_ == null) {
25 nextId_ = 17; 25 nextId_ = 17;
26 } 26 }
27 return nextId_++; 27 return nextId_++;
28 } 28 }
29 } 29 }
30 30
31 // Zebra relies on the system provided identity hash. 31 // Zebra relies on the system provided identity hash.
32 class Zebra implements BigGame { 32 class Zebra implements BigGame {
33 final String name; 33 final String name;
34 Zebra(this.name) {} 34 Zebra(this.name) {}
35 } 35 }
36 36
37 37
38 class SavannahTest { 38 class SavannahTest {
39 39
40 static void testMain() { 40 static void testMain() {
41 Map<BigGame, String> savannah = new Map<BigGame, String>(); 41 Map<BigGame, String> savannah = new Map<BigGame, String>();
42 42
43 Giraffe giraffe1 = new Giraffe("Tony"); 43 Giraffe giraffe1 = new Giraffe("Tony");
44 Giraffe giraffe2 = new Giraffe("Rose"); 44 Giraffe giraffe2 = new Giraffe("Rose");
45 savannah[giraffe1] = giraffe1.name; 45 savannah[giraffe1] = giraffe1.name;
46 savannah[giraffe2] = giraffe2.name; 46 savannah[giraffe2] = giraffe2.name;
47 print("giraffe1 hash: ${giraffe1.hashCode()}"); 47 print("giraffe1 hash: ${giraffe1.hashCode}");
48 print("giraffe2 hash: ${giraffe2.hashCode()}"); 48 print("giraffe2 hash: ${giraffe2.hashCode}");
49 49
50 var count = savannah.length; 50 var count = savannah.length;
51 print("getCount is $count"); 51 print("getCount is $count");
52 Expect.equals(2, count); 52 Expect.equals(2, count);
53 53
54 print("giraffe1: ${savannah[giraffe1]}"); 54 print("giraffe1: ${savannah[giraffe1]}");
55 print("giraffe2: ${savannah[giraffe2]}"); 55 print("giraffe2: ${savannah[giraffe2]}");
56 Expect.equals("Tony", savannah[giraffe1]); 56 Expect.equals("Tony", savannah[giraffe1]);
57 Expect.equals("Rose", savannah[giraffe2]); 57 Expect.equals("Rose", savannah[giraffe2]);
58 58
59 Zebra zebra1 = new Zebra("Paolo"); 59 Zebra zebra1 = new Zebra("Paolo");
60 Zebra zebra2 = new Zebra("Zeeta"); 60 Zebra zebra2 = new Zebra("Zeeta");
61 savannah[zebra1] = zebra1.name; 61 savannah[zebra1] = zebra1.name;
62 savannah[zebra2] = zebra2.name; 62 savannah[zebra2] = zebra2.name;
63 print("zebra1 hash: ${zebra1.hashCode()}"); 63 print("zebra1 hash: ${zebra1.hashCode}");
64 print("zebra2 hash: ${zebra2.hashCode()}"); 64 print("zebra2 hash: ${zebra2.hashCode}");
65 65
66 count = savannah.length; 66 count = savannah.length;
67 print("getCount is $count"); 67 print("getCount is $count");
68 Expect.equals(4, count); 68 Expect.equals(4, count);
69 69
70 print("zebra1: ${savannah[zebra1]}"); 70 print("zebra1: ${savannah[zebra1]}");
71 print("zebra2: ${savannah[zebra2]}"); 71 print("zebra2: ${savannah[zebra2]}");
72 Expect.equals("Paolo", savannah[zebra1]); 72 Expect.equals("Paolo", savannah[zebra1]);
73 Expect.equals("Zeeta", savannah[zebra2]); 73 Expect.equals("Zeeta", savannah[zebra2]);
74 } 74 }
75 75
76 } 76 }
77 77
78 main() { 78 main() {
79 SavannahTest.testMain(); 79 SavannahTest.testMain();
80 } 80 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698