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

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

Issue 1001863002: Fix DoubleLinkedQueue so that appending to entries also update the queue length. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix type warnings. Created 5 years, 9 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 | « sdk/lib/collection/queue.dart ('k') | no next file » | 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) 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 4
5 library queue.test; 5 library queue.test;
6 6
7 import "package:expect/expect.dart"; 7 import "package:expect/expect.dart";
8 import 'dart:collection'; 8 import 'dart:collection';
9 9
10 abstract class QueueTest { 10 abstract class QueueTest {
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 class DoubleLinkedQueueTest extends QueueTest { 392 class DoubleLinkedQueueTest extends QueueTest {
393 Queue newQueue() => new DoubleLinkedQueue(); 393 Queue newQueue() => new DoubleLinkedQueue();
394 Queue newQueueFrom(Iterable elements) => new DoubleLinkedQueue.from(elements); 394 Queue newQueueFrom(Iterable elements) => new DoubleLinkedQueue.from(elements);
395 395
396 void testMain() { 396 void testMain() {
397 super.testMain(); 397 super.testMain();
398 testQueueElements(); 398 testQueueElements();
399 } 399 }
400 400
401 void testQueueElements() { 401 void testQueueElements() {
402 DoubleLinkedQueue<int> queue1 = new DoubleLinkedQueue<int>.from([1, 2, 4]); 402 DoubleLinkedQueue<int> queue1 = new DoubleLinkedQueue<int>.from([1, 2, 3]);
403 DoubleLinkedQueue<int> queue2 = new DoubleLinkedQueue<int>(); 403 DoubleLinkedQueue<int> queue2 = new DoubleLinkedQueue<int>();
404 queue2.addAll(queue1); 404 queue2.addAll(queue1);
405 405
406 Expect.equals(queue1.length, queue2.length); 406 Expect.equals(queue1.length, queue2.length);
407 DoubleLinkedQueueEntry<int> entry1 = queue1.firstEntry(); 407 DoubleLinkedQueueEntry<int> entry1 = queue1.firstEntry();
408 DoubleLinkedQueueEntry<int> entry2 = queue2.firstEntry(); 408 DoubleLinkedQueueEntry<int> entry2 = queue2.firstEntry();
409 while (entry1 != null) { 409 while (entry1 != null) {
410 Expect.equals(true, !identical(entry1, entry2)); 410 Expect.equals(true, !identical(entry1, entry2));
411 entry1 = entry1.nextEntry(); 411 entry1 = entry1.nextEntry();
412 entry2 = entry2.nextEntry(); 412 entry2 = entry2.nextEntry();
413 } 413 }
414 Expect.equals(null, entry2); 414 Expect.equals(null, entry2);
415
416 var firstEntry = queue1.firstEntry();
417 var secondEntry = queue1.firstEntry().nextEntry();
418 var thirdEntry = queue1.lastEntry();
419 firstEntry.prepend(4);
420 firstEntry.append(5);
421 secondEntry.prepend(6);
422 secondEntry.append(7);
423 thirdEntry.prepend(8);
424 thirdEntry.append(9);
425 Expect.equals(9, queue1.length);
426 Expect.listEquals(queue1.toList(), [4, 1, 5, 6, 2, 7, 8, 3, 9]);
427 Expect.equals(1, firstEntry.remove());
428 Expect.equals(2, secondEntry.remove());
429 Expect.equals(3, thirdEntry.remove());
430 Expect.equals(6, queue1.length);
431 Expect.listEquals(queue1.toList(), [4, 5, 6, 7, 8, 9]);
415 } 432 }
416 } 433 }
417 434
435 void linkEntryTest() {
436 var entry = new DoubleLinkedQueueEntry(42);
437 Expect.equals(null, entry.previousEntry());
438 Expect.equals(null, entry.nextEntry());
439
440 entry.append(37);
441 entry.prepend(87);
442 var prev = entry.previousEntry();
443 var next = entry.nextEntry();
444 Expect.equals(42, entry.element);
445 Expect.equals(37, next.element);
446 Expect.equals(87, prev.element);
447 Expect.identical(entry, prev.nextEntry());
448 Expect.identical(entry, next.previousEntry());
449 Expect.equals(null, next.nextEntry());
450 Expect.equals(null, prev.previousEntry());
451
452 entry.element = 117;
453 Expect.equals(117, entry.element);
454 Expect.identical(next, entry.nextEntry());
455 Expect.identical(prev, entry.previousEntry());
456
457 Expect.equals(117, entry.remove());
458 Expect.identical(next, prev.nextEntry());
459 Expect.identical(prev, next.previousEntry());
460 Expect.equals(null, next.nextEntry());
461 Expect.equals(null, prev.previousEntry());
462 Expect.equals(37, next.element);
463 Expect.equals(87, prev.element);
464
465 Expect.equals(37, next.remove());
466 Expect.equals(87, prev.element);
467 Expect.equals(null, prev.nextEntry());
468 Expect.equals(null, prev.previousEntry());
469
470 Expect.equals(87, prev.remove());
471 }
472
418 473
419 main() { 474 main() {
420 new DoubleLinkedQueueTest().testMain(); 475 new DoubleLinkedQueueTest().testMain();
421 new ListQueueTest().testMain(); 476 new ListQueueTest().testMain();
477 linkEntryTest();
422 } 478 }
OLDNEW
« no previous file with comments | « sdk/lib/collection/queue.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698