From 79a7191e605d22ffe9d2142039f586682c6902d6 Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Mon, 23 Aug 2010 16:57:10 +0000 Subject: Fix and test case for broken linked lists, cont... Fix and test case for broken linked lists, contributed by Lucien Pereira. Closes #3361, no review. --- test/files/run/t3361.scala | 100 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 test/files/run/t3361.scala (limited to 'test/files/run/t3361.scala') diff --git a/test/files/run/t3361.scala b/test/files/run/t3361.scala new file mode 100644 index 0000000000..3e6fc30c8f --- /dev/null +++ b/test/files/run/t3361.scala @@ -0,0 +1,100 @@ +object Test extends Application { + import scala.collection.mutable.DoubleLinkedList + + empty + builder_1 + builder_2 + chaining_1 + chaining_2 + insert_1 + insert_2 + append_1 + append_2 + + def empty { + val none = DoubleLinkedList() + require(none.size == 0) + none.foreach( _ => require(false)) + } + + def builder_1 { + val ten = DoubleLinkedList(1 to 10: _*) + require(10 == ten.size) + } + + def builder_2 { + val ten = DoubleLinkedList(1 to 10: _*) + require((ten.size*(ten.size+1))/2 == ten.reduceLeft(_ + _)) + } + + def chaining_1 { + val ten = DoubleLinkedList(1 to 10: _*) + require(ten.reverse == DoubleLinkedList((1 to 10).reverse: _*)) + } + + def chaining_2 { + val ten = DoubleLinkedList(1 to 10: _*) + require(ten == ten.reverse.reverse) + } + + def insert_1 { + val ten = DoubleLinkedList(1 to 10: _*) + ten.insert(DoubleLinkedList(11)) match { + case _: Unit => require(true) + case _ => require(false) + } + // Post-insert size test + require(11 == ten.size) + // Post-insert data test + require((ten.size*(ten.size+1))/2 == ten.reduceLeft(_ + _)) + // Post-insert chaining test + require(ten == ten.reverse.reverse) + // Post-insert position test + require(ten.last == 11) + } + + def insert_2 { + val ten = DoubleLinkedList(1 to 10: _*) + try { + DoubleLinkedList().insert(ten) + } catch { + case _: IllegalArgumentException => require(true) + case _ => require(false) + } + val zero = DoubleLinkedList(0) + zero.insert(ten) + require(zero.size == 11) + require(zero.head == 0) + require(zero.last == 10) + } + + def append_1 { + val ten = DoubleLinkedList(1 to 10: _*) + val eleven = ten.append(DoubleLinkedList(11)) + // Post-append equality test + require(ten == eleven) + // Post-append size test + require(11 == ten.size) + // Post-append data test + require((ten.size*(ten.size+1))/2 == ten.reduceLeft(_ + _)) + // Post-append chaining test + require(ten == ten.reverse.reverse) + // Post-append position test + require(ten.last == 11) + } + + def append_2 { + val ten = DoubleLinkedList(1 to 10: _*) + try { + DoubleLinkedList().append(ten) + } catch { + case _: IllegalArgumentException => require(true) + case _ => require(false) + } + val zero = DoubleLinkedList(0) + zero.append(ten) + require(zero.size == 11) + require(zero.head == 0) + require(zero.last == 10) + } +} -- cgit v1.2.3