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

Side by Side Diff: packages/collection/test/algorithms_test.dart

Issue 2989763002: Update charted to 0.4.8 and roll (Closed)
Patch Set: Removed Cutch from list of reviewers Created 3 years, 4 months 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
« no previous file with comments | « packages/collection/pubspec.yaml ('k') | packages/collection/test/canonicalized_map_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 4
5 /// Tests algorithm utilities. 5 /// Tests algorithm utilities.
6 6
7 import "package:collection/collection.dart"; 7 import "package:collection/collection.dart";
8 import "package:test/test.dart"; 8 import "package:test/test.dart";
9 import 'dart:math'; 9 import 'dart:math';
10 10
(...skipping 25 matching lines...) Expand all
36 if (!const ListEquality().equals(c, l)) return; 36 if (!const ListEquality().equals(c, l)) return;
37 // Odds of not changing the order should be one in ~ 16! ~= 2e+13. 37 // Odds of not changing the order should be one in ~ 16! ~= 2e+13.
38 // Repeat this 10 times, and the odds of accidentally shuffling to the 38 // Repeat this 10 times, and the odds of accidentally shuffling to the
39 // same result every time is disappearingly tiny. 39 // same result every time is disappearingly tiny.
40 count++; 40 count++;
41 // If this happens even once, it's ok to report it. 41 // If this happens even once, it's ok to report it.
42 print("Failed shuffle $count times"); 42 print("Failed shuffle $count times");
43 if (count == 10) fail("Shuffle didn't change order."); 43 if (count == 10) fail("Shuffle didn't change order.");
44 } while (true); 44 } while (true);
45 }); 45 });
46 test("Shuffle sublist", (){ 46 test("Shuffle sublist", () {
47 List l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; 47 List l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
48 List c = l.toList(); 48 List c = l.toList();
49 shuffle(l, 4, 12); 49 shuffle(l, 4, 12);
50 expect(const IterableEquality().equals(l.getRange(0, 4), 50 expect(const IterableEquality().equals(l.getRange(0, 4), c.getRange(0, 4)),
51 c.getRange(0, 4)), isTrue); 51 isTrue);
52 expect(const IterableEquality().equals(l.getRange(12, 16), 52 expect(
53 c.getRange(12, 16)), isTrue); 53 const IterableEquality().equals(l.getRange(12, 16), c.getRange(12, 16)),
54 expect(const UnorderedIterableEquality().equals(l.getRange(4, 12), 54 isTrue);
55 c.getRange(4, 12)), 55 expect(
56 isTrue); 56 const UnorderedIterableEquality()
57 57 .equals(l.getRange(4, 12), c.getRange(4, 12)),
58 isTrue);
58 }); 59 });
59 60
60 test("binsearch0", () { 61 test("binsearch0", () {
61 expect(binarySearch([], 2), equals(-1)); 62 expect(binarySearch([], 2), equals(-1));
62 }); 63 });
63 64
64 test("binsearch1", () { 65 test("binsearch1", () {
65 expect(binarySearch([5], 2), equals(-1)); 66 expect(binarySearch([5], 2), equals(-1));
66 expect(binarySearch([5], 5), equals(0)); 67 expect(binarySearch([5], 5), equals(0));
67 expect(binarySearch([5], 7), equals(-1)); 68 expect(binarySearch([5], 7), equals(-1));
68 }); 69 });
69 70
70 test("binsearch3", () { 71 test("binsearch3", () {
71 expect(binarySearch([0, 5, 10], -1), equals(-1)); 72 expect(binarySearch([0, 5, 10], -1), equals(-1));
72 expect(binarySearch([0, 5, 10], 0), equals(0)); 73 expect(binarySearch([0, 5, 10], 0), equals(0));
73 expect(binarySearch([0, 5, 10], 2), equals(-1)); 74 expect(binarySearch([0, 5, 10], 2), equals(-1));
74 expect(binarySearch([0, 5, 10], 5), equals(1)); 75 expect(binarySearch([0, 5, 10], 5), equals(1));
75 expect(binarySearch([0, 5, 10], 7), equals(-1)); 76 expect(binarySearch([0, 5, 10], 7), equals(-1));
76 expect(binarySearch([0, 5, 10], 10), equals(2)); 77 expect(binarySearch([0, 5, 10], 10), equals(2));
77 expect(binarySearch([0, 5, 10], 12), equals(-1)); 78 expect(binarySearch([0, 5, 10], 12), equals(-1));
78 }); 79 });
79 80
80 test("binsearchCompare0", () { 81 test("binsearchCompare0", () {
81 expect(binarySearch([], new C(2), compare: compareC), equals(-1)); 82 expect(binarySearch(<C>[], new C(2), compare: compareC), equals(-1));
82 }); 83 });
83 84
84 test("binsearchCompare1", () { 85 test("binsearchCompare1", () {
85 var l1 = [new C(5)]; 86 var l1 = [new C(5)];
86 expect(binarySearch(l1, new C(2), compare: compareC), equals(-1)); 87 expect(binarySearch(l1, new C(2), compare: compareC), equals(-1));
87 expect(binarySearch(l1, new C(5), compare: compareC), equals(0)); 88 expect(binarySearch(l1, new C(5), compare: compareC), equals(0));
88 expect(binarySearch(l1, new C(7), compare: compareC), equals(-1)); 89 expect(binarySearch(l1, new C(7), compare: compareC), equals(-1));
89 }); 90 });
90 91
91 test("binsearchCompare3", () { 92 test("binsearchCompare3", () {
92 var l3 = [new C(0), new C(5), new C(10)]; 93 var l3 = [new C(0), new C(5), new C(10)];
93 expect(binarySearch(l3, new C(-1), compare: compareC), equals(-1)); 94 expect(binarySearch(l3, new C(-1), compare: compareC), equals(-1));
94 expect(binarySearch(l3, new C(0), compare: compareC), equals(0)); 95 expect(binarySearch(l3, new C(0), compare: compareC), equals(0));
95 expect(binarySearch(l3, new C(2), compare: compareC), equals(-1)); 96 expect(binarySearch(l3, new C(2), compare: compareC), equals(-1));
96 expect(binarySearch(l3, new C(5), compare: compareC), equals(1)); 97 expect(binarySearch(l3, new C(5), compare: compareC), equals(1));
97 expect(binarySearch(l3, new C(7), compare: compareC), equals(-1)); 98 expect(binarySearch(l3, new C(7), compare: compareC), equals(-1));
98 expect(binarySearch(l3, new C(10), compare: compareC), equals(2)); 99 expect(binarySearch(l3, new C(10), compare: compareC), equals(2));
99 expect(binarySearch(l3, new C(12), compare: compareC), equals(-1)); 100 expect(binarySearch(l3, new C(12), compare: compareC), equals(-1));
100 }); 101 });
101 102
103 test("lowerbound0", () {
104 expect(lowerBound([], 2), equals(0));
105 });
106
107 test("lowerbound1", () {
108 expect(lowerBound([5], 2), equals(0));
109 expect(lowerBound([5], 5), equals(0));
110 expect(lowerBound([5], 7), equals(1));
111 });
112
113 test("lowerbound3", () {
114 expect(lowerBound([0, 5, 10], -1), equals(0));
115 expect(lowerBound([0, 5, 10], 0), equals(0));
116 expect(lowerBound([0, 5, 10], 2), equals(1));
117 expect(lowerBound([0, 5, 10], 5), equals(1));
118 expect(lowerBound([0, 5, 10], 7), equals(2));
119 expect(lowerBound([0, 5, 10], 10), equals(2));
120 expect(lowerBound([0, 5, 10], 12), equals(3));
121 });
122
123 test("lowerboundRepeat", () {
124 expect(lowerBound([5, 5, 5], 5), equals(0));
125 expect(lowerBound([0, 5, 5, 5, 10], 5), equals(1));
126 });
127
128 test("lowerboundCompare0", () {
129 expect(lowerBound(<C>[], new C(2), compare: compareC), equals(0));
130 });
131
132 test("lowerboundCompare1", () {
133 var l1 = [new C(5)];
134 expect(lowerBound(l1, new C(2), compare: compareC), equals(0));
135 expect(lowerBound(l1, new C(5), compare: compareC), equals(0));
136 expect(lowerBound(l1, new C(7), compare: compareC), equals(1));
137 });
138
139 test("lowerboundCompare3", () {
140 var l3 = [new C(0), new C(5), new C(10)];
141 expect(lowerBound(l3, new C(-1), compare: compareC), equals(0));
142 expect(lowerBound(l3, new C(0), compare: compareC), equals(0));
143 expect(lowerBound(l3, new C(2), compare: compareC), equals(1));
144 expect(lowerBound(l3, new C(5), compare: compareC), equals(1));
145 expect(lowerBound(l3, new C(7), compare: compareC), equals(2));
146 expect(lowerBound(l3, new C(10), compare: compareC), equals(2));
147 expect(lowerBound(l3, new C(12), compare: compareC), equals(3));
148 });
149
150 test("lowerboundCompareRepeat", () {
151 var l1 = [new C(5), new C(5), new C(5)];
152 var l2 = [new C(0), new C(5), new C(5), new C(5), new C(10)];
153 expect(lowerBound(l1, new C(5), compare: compareC), equals(0));
154 expect(lowerBound(l2, new C(5), compare: compareC), equals(1));
155 });
156
102 test("insertionSortRandom", () { 157 test("insertionSortRandom", () {
103 Random random = new Random(); 158 Random random = new Random();
104 for (int i = 0; i < 25; i++) { 159 for (int i = 0; i < 25; i++) {
105 List list = new List(i); 160 List list = new List(i);
106 for (int j = 0; j < i; j++) { 161 for (int j = 0; j < i; j++) {
107 list[j] = random.nextInt(25); // Expect some equal elements. 162 list[j] = random.nextInt(25); // Expect some equal elements.
108 } 163 }
109 insertionSort(list); 164 insertionSort(list);
110 for (int j = 1; j < i; j++) { 165 for (int j = 1; j < i; j++) {
111 expect(list[j - 1], lessThanOrEqualTo(list[j])); 166 expect(list[j - 1], lessThanOrEqualTo(list[j]));
112 } 167 }
113 } 168 }
114 }); 169 });
115 170
116 test("insertionSortSubRanges", () { 171 test("insertionSortSubRanges", () {
117 List l = [6, 5, 4, 3, 2, 1]; 172 List l = [6, 5, 4, 3, 2, 1];
(...skipping 17 matching lines...) Expand all
135 l = [6, 6, 3, 3, 0, 0]; 190 l = [6, 6, 3, 3, 0, 0];
136 insertionSort(l); 191 insertionSort(l);
137 expect(l, equals([0, 0, 3, 3, 6, 6])); 192 expect(l, equals([0, 0, 3, 3, 6, 6]));
138 }); 193 });
139 194
140 test("MergeSortRandom", () { 195 test("MergeSortRandom", () {
141 Random random = new Random(); 196 Random random = new Random();
142 for (int i = 0; i < 250; i += 1) { 197 for (int i = 0; i < 250; i += 1) {
143 List list = new List(i); 198 List list = new List(i);
144 for (int j = 0; j < i; j++) { 199 for (int j = 0; j < i; j++) {
145 list[j] = random.nextInt(i); // Expect some equal elements. 200 list[j] = random.nextInt(i); // Expect some equal elements.
146 } 201 }
147 mergeSort(list); 202 mergeSort(list);
148 for (int j = 1; j < i; j++) { 203 for (int j = 1; j < i; j++) {
149 expect(list[j - 1], lessThanOrEqualTo(list[j])); 204 expect(list[j - 1], lessThanOrEqualTo(list[j]));
150 } 205 }
151 } 206 }
152 }); 207 });
153 208
154 test("MergeSortPreservesOrder", () { 209 test("MergeSortPreservesOrder", () {
155 Random random = new Random(); 210 Random random = new Random();
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 expect(l, equals([5, 6, 3, 4, 1, 2])); 308 expect(l, equals([5, 6, 3, 4, 1, 2]));
254 reverse(l, 0, 6); 309 reverse(l, 0, 6);
255 expect(l, equals([2, 1, 4, 3, 6, 5])); 310 expect(l, equals([2, 1, 4, 3, 6, 5]));
256 }); 311 });
257 } 312 }
258 313
259 class C { 314 class C {
260 final int id; 315 final int id;
261 C(this.id); 316 C(this.id);
262 } 317 }
318
263 int compareC(C one, C other) => one.id - other.id; 319 int compareC(C one, C other) => one.id - other.id;
264 320
265 class OC implements Comparable<OC> { 321 class OC implements Comparable<OC> {
266 final int id; 322 final int id;
267 final int order; 323 final int order;
268 OC(this.id, this.order); 324 OC(this.id, this.order);
269 int compareTo(OC other) => id - other.id; 325 int compareTo(OC other) => id - other.id;
270 String toString() => "OC[$id,$order]"; 326 String toString() => "OC[$id,$order]";
271 } 327 }
OLDNEW
« no previous file with comments | « packages/collection/pubspec.yaml ('k') | packages/collection/test/canonicalized_map_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698