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

Side by Side Diff: tests/corelib/collection_to_string_test.dart

Issue 10829459: Deprecate Math object in corelib in favor of dart:math library. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address review comments. Created 8 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 | Annotate | Revision Log
« no previous file with comments | « tests/co19/co19-runtime.status ('k') | tests/corelib/math_parse_double_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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 /** 5 /**
6 * Tests for the toString methods on collections (including maps). 6 * Tests for the toString methods on collections (including maps).
7 */ 7 */
8 8
9 #library('collection_to_string');
10 #import('dart:math', prefix: 'Math');
11
9 // TODO(jjb): seed random number generator when API allows it 12 // TODO(jjb): seed random number generator when API allows it
10 13
11 final int NUM_TESTS = 300; 14 final int NUM_TESTS = 300;
12 final int MAX_COLLECTION_SIZE = 7; 15 final int MAX_COLLECTION_SIZE = 7;
13 16
17 Math.Random rand;
18
14 main() { 19 main() {
20 rand = new Math.Random();
15 smokeTest(); 21 smokeTest();
16 exactTest(); 22 exactTest();
17 inexactTest(); 23 inexactTest();
18 } 24 }
19 25
20 26
21 /** 27 /**
22 * Test a few simple examples. 28 * Test a few simple examples.
23 */ 29 */
24 void smokeTest() { 30 void smokeTest() {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 * Return a random collection (or map) of the specified size, placing its 123 * Return a random collection (or map) of the specified size, placing its
118 * string representation into the given string buffer. The beingMade 124 * string representation into the given string buffer. The beingMade
119 * parameter is a list of collections currently under construction, i.e., 125 * parameter is a list of collections currently under construction, i.e.,
120 * candidates for recursive references. 126 * candidates for recursive references.
121 * 127 *
122 * If exact is true, the returned collections will not be, and will not contain 128 * If exact is true, the returned collections will not be, and will not contain
123 * a collection with ill-defined iteration order (i.e., a HashSet or HashMap). 129 * a collection with ill-defined iteration order (i.e., a HashSet or HashMap).
124 */ 130 */
125 Object randomCollectionHelper(int size, bool exact, StringBuffer stringRep, 131 Object randomCollectionHelper(int size, bool exact, StringBuffer stringRep,
126 List beingMade) { 132 List beingMade) {
127 double interfaceFrac = Math.random(); 133 double interfaceFrac = rand.nextDouble();
128 134
129 if (exact) { 135 if (exact) {
130 if (interfaceFrac < 1/3) { 136 if (interfaceFrac < 1/3) {
131 return randomList(size, exact, stringRep, beingMade); 137 return randomList(size, exact, stringRep, beingMade);
132 } else if (interfaceFrac < 2/3) { 138 } else if (interfaceFrac < 2/3) {
133 return randomQueue(size, exact, stringRep, beingMade); 139 return randomQueue(size, exact, stringRep, beingMade);
134 } else { 140 } else {
135 return randomMap(size, exact, stringRep, beingMade); 141 return randomMap(size, exact, stringRep, beingMade);
136 } 142 }
137 } else { 143 } else {
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 * Generates a random element which can be an int, a collection, or a map, 260 * Generates a random element which can be an int, a collection, or a map,
255 * and emits it to StringRep. The beingMade parameter is a list of collections 261 * and emits it to StringRep. The beingMade parameter is a list of collections
256 * currently under construction, i.e., candidates for recursive references. 262 * currently under construction, i.e., candidates for recursive references.
257 * 263 *
258 * If exact is true, the returned element will not be, and will not contain 264 * If exact is true, the returned element will not be, and will not contain
259 * a collection with ill-defined iteration order (i.e., a HashSet or HashMap). 265 * a collection with ill-defined iteration order (i.e., a HashSet or HashMap).
260 */ 266 */
261 Object randomElement(int size, bool exact, StringBuffer stringRep, 267 Object randomElement(int size, bool exact, StringBuffer stringRep,
262 List beingMade) { 268 List beingMade) {
263 Object result; 269 Object result;
264 double elementTypeFrac = Math.random(); 270 double elementTypeFrac = rand.nextDouble();
265 if (elementTypeFrac < 1/3) { 271 if (elementTypeFrac < 1/3) {
266 result = random(1000); 272 result = random(1000);
267 stringRep.add(result); 273 stringRep.add(result);
268 } else if (elementTypeFrac < 2/3) { 274 } else if (elementTypeFrac < 2/3) {
269 // Element Is a random (new) collection 275 // Element Is a random (new) collection
270 result = randomCollectionHelper(size, exact, stringRep, beingMade); 276 result = randomCollectionHelper(size, exact, stringRep, beingMade);
271 } else { 277 } else {
272 // Element Is a random recursive ref 278 // Element Is a random recursive ref
273 result = beingMade[random(beingMade.length)]; 279 result = beingMade[random(beingMade.length)];
274 if (result is List) 280 if (result is List)
275 stringRep.add('[...]'); 281 stringRep.add('[...]');
276 else 282 else
277 stringRep.add('{...}'); 283 stringRep.add('{...}');
278 } 284 }
279 return result; 285 return result;
280 } 286 }
281 287
282 /** Returns a random int on [0, max) */ 288 /** Returns a random int on [0, max) */
283 int random(int max) { 289 int random(int max) {
284 return (Math.random() * max).toInt(); 290 return rand.nextInt(max);
285 } 291 }
286 292
287 /** Returns a random boolean value. */ 293 /** Returns a random boolean value. */
288 bool randomBool() { 294 bool randomBool() {
289 return Math.random() < .5; 295 return rand.nextBool();
290 } 296 }
291 297
292 /** Returns the alphabetized characters in a string. */ 298 /** Returns the alphabetized characters in a string. */
293 String alphagram(String s) { 299 String alphagram(String s) {
294 List<int> chars = s.charCodes(); 300 List<int> chars = s.charCodes();
295 chars.sort((int a, int b) => a - b); 301 chars.sort((int a, int b) => a - b);
296 return new String.fromCharCodes(chars); 302 return new String.fromCharCodes(chars);
297 } 303 }
OLDNEW
« no previous file with comments | « tests/co19/co19-runtime.status ('k') | tests/corelib/math_parse_double_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698