OLD | NEW |
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 Loading... |
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 } |
OLD | NEW |