blob: 8efb8281db74aaff5a62f0671460a5db55721f32 (
plain) (
blame)
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
import scala.collection.mutable.MutableList
class ExtList[T] extends MutableList[T] {
def printState: Unit = {
println("Length: " + len)
println("Last elem: " + last0.elem)
println("First elem: " + first0.elem)
println("After first elem: " + first0.next.elem)
println("After first: " + first0.next)
println("Last: " + last0)
}
}
object Test {
def main(args: Array[String]): Unit = {
testEmpty
testAddElement
testAddFewElements
testAddMoreElements
testTraversables
}
def testEmpty: Unit = {
val mlist = new MutableList[Int]
assert(mlist.isEmpty)
assert(mlist.get(0) == None)
}
def testAddElement: Unit = {
val mlist = new MutableList[Int]
mlist += 17
assert(mlist.nonEmpty)
assert(mlist.length == 1)
assert(mlist.head == 17)
assert(mlist.last == 17)
assert(mlist(0) == 17)
assert(mlist.tail.isEmpty)
assert(mlist.tail.length == 0)
mlist(0) = 101
assert(mlist(0) == 101)
assert(mlist.toList == List(101))
assert(mlist.tail.get(0) == None)
assert((mlist.tail += 19).head == 19)
assert(mlist.tail.length == 0)
}
def testAddFewElements: Unit = {
val mlist = new MutableList[Int]
for (i <- 0 until 2) mlist += i
// mlist.printState
for (i <- 0 until 2) assert(mlist(i) == i)
assert(mlist.length == 2)
assert(mlist.nonEmpty)
assert(mlist.tail.length == 1)
assert(mlist.tail.tail.length == 0)
assert(mlist.tail.tail.isEmpty)
}
def testAddMoreElements: Unit = {
val mlist = new MutableList[Int]
for (i <- 0 until 10) mlist += i * i
assert(mlist.nonEmpty)
assert(mlist.length == 10)
for (i <- 0 until 10) assert(mlist(i) == i * i)
assert(mlist(5) == 5 * 5)
assert(mlist(9) == 9 * 9)
var sometail = mlist
for (i <- 0 until 10) {
assert(sometail.head == i * i)
sometail = sometail.tail
}
mlist(5) = -25
assert(mlist(5) == -25)
mlist(0) = -1
assert(mlist(0) == -1)
mlist(9) = -81
assert(mlist(9) == -81)
assert(mlist(5) == -25)
assert(mlist(0) == -1)
assert(mlist.last == -81)
mlist.clear
assert(mlist.isEmpty)
mlist += 1001
assert(mlist.head == 1001)
mlist += 9999
assert(mlist.tail.head == 9999)
assert(mlist.last == 9999)
}
def testTraversables: Unit = {
val mlist = new MutableList[Int]
for (i <- 0 until 10) mlist += i * i
var lst = mlist.drop(5)
for (i <- 0 until 5) assert(lst(i) == (i + 5) * (i + 5))
lst = lst.take(3)
for (i <- 0 until 3) assert(lst(i) == (i + 5) * (i + 5))
lst += 129
assert(lst(3) == 129)
assert(lst.last == 129)
assert(lst.length == 4)
lst += 7
assert(lst.init.last == 129)
assert(lst.length == 5)
lst.clear
assert(lst.length == 0)
for (i <- 0 until 5) lst += i
assert(lst.reduceLeft(_ + _) == 10)
}
}
|