1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
object Test extends App {
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.append(DoubleLinkedList(11))
// 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 _: Throwable => 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 _: Throwable => require(false)
}
val zero = DoubleLinkedList(0)
zero.append(ten)
require(zero.size == 11)
require(zero.head == 0)
require(zero.last == 10)
}
}
|