diff options
author | Paul Phillips <paulp@improving.org> | 2010-08-23 16:57:10 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-08-23 16:57:10 +0000 |
commit | 79a7191e605d22ffe9d2142039f586682c6902d6 (patch) | |
tree | a2efb969100277f161929523591a96d6f4a5902d /test/files/run/t3361.scala | |
parent | 3db5daf609b4c67ce1a236eb4c99a0fdc008581d (diff) | |
download | scala-79a7191e605d22ffe9d2142039f586682c6902d6.tar.gz scala-79a7191e605d22ffe9d2142039f586682c6902d6.tar.bz2 scala-79a7191e605d22ffe9d2142039f586682c6902d6.zip |
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.
Diffstat (limited to 'test/files/run/t3361.scala')
-rw-r--r-- | test/files/run/t3361.scala | 100 |
1 files changed, 100 insertions, 0 deletions
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) + } +} |