summaryrefslogtreecommitdiff
path: root/test/files/run/UnrolledBuffer.scala
diff options
context:
space:
mode:
authorAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2010-11-08 08:52:20 +0000
committerAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2010-11-08 08:52:20 +0000
commit09ed9d12c343ee972861c8439fd10596903efe59 (patch)
treeea2735b13b43d4132664d8b3d6a9c23e2b709b7e /test/files/run/UnrolledBuffer.scala
parent056663c3f22b8c03f222856305ef99e3ed029889 (diff)
downloadscala-09ed9d12c343ee972861c8439fd10596903efe59.tar.gz
scala-09ed9d12c343ee972861c8439fd10596903efe59.tar.bz2
scala-09ed9d12c343ee972861c8439fd10596903efe59.zip
Added size maps to flat hash tables.
Added parallel mutable hash sets. Implemented parallel mutable hash set iterators. Implemented parallel mutable hash set combiners. Factored out unrolled linked lists into a separate class UnrolledBuffer, added tests. Added parallel mutable hash set tests, and debugged hashsets. No review.
Diffstat (limited to 'test/files/run/UnrolledBuffer.scala')
-rw-r--r--test/files/run/UnrolledBuffer.scala125
1 files changed, 125 insertions, 0 deletions
diff --git a/test/files/run/UnrolledBuffer.scala b/test/files/run/UnrolledBuffer.scala
new file mode 100644
index 0000000000..7e113c3e04
--- /dev/null
+++ b/test/files/run/UnrolledBuffer.scala
@@ -0,0 +1,125 @@
+
+
+
+
+import collection.parallel.UnrolledBuffer
+
+
+
+object Test {
+
+ def main(args: Array[String]) {
+ val u1 = new UnrolledBuffer[Int]
+ assert(u1.isEmpty)
+ assert(u1.size == 0)
+
+ u1 += 1
+ u1 += 2
+ u1 += 3
+ assert(u1 == UnrolledBuffer(1, 2, 3))
+ assert(u1.toList == List(1, 2, 3))
+ assert(u1.nonEmpty)
+ assert(u1.size == 3)
+
+ u1.clear
+ assert(u1.isEmpty)
+ assert(u1.size == 0)
+
+ u1 += 1
+ u1 += 2
+ u1 += 3
+ u1.remove(1)
+ assert(u1.nonEmpty)
+ assert(u1.size == 2)
+ assert(u1 == UnrolledBuffer(1, 3))
+ assert(u1.toList == List(1, 3))
+
+ u1 concat UnrolledBuffer(5, 7, 9)
+ assert(u1 == UnrolledBuffer(1, 3, 5, 7, 9))
+
+ val u2 = u1 map { x => (x - 1) / 2 }
+ assert(u2 == UnrolledBuffer(0, 1, 2, 3, 4))
+
+ u1.clear
+ u2.clear
+ assert(u1.size == 0)
+ assert(u2.size == 0)
+
+ for (i <- 0 until 500) u1 += i
+ for (i <- 500 until 1000) u2 += i
+ assert(u1.size == 500)
+ assert(u2.size == 500)
+ assert(u1.iterator.toList == (0 until 500).toList)
+ assert((for (elem <- u1) yield elem) sameElements (0 until 500))
+
+ u1 concat u2
+ assert(u1.size == 1000)
+ assert(u2.size == 0)
+ assertCorrect(u1)
+
+ u1 concat UnrolledBuffer()
+ assertCorrect(u1)
+
+ val u3 = u1 map { x => x }
+ var i = 0
+ for (elem <- u1) {
+ assert(elem == u3(i))
+ i += 1
+ }
+
+ u1.remove(999)
+ assert(u1.size == 999)
+ assertCorrect(u1)
+
+ u1.remove(500)
+ assert(u1.size == 998)
+ assertCorrect(u1)
+
+ u1.remove(5)
+ assert(u1.size == 997)
+ assertCorrect(u1)
+
+ u1.remove(0)
+ assert(u1.size == 996)
+ assertCorrect(u1)
+
+ u1.insert(0, 0)
+ assert(u1.size == 997)
+ assertCorrect(u1)
+
+ u1.insert(5, 5)
+ assert(u1.size == 998)
+ assertCorrect(u1)
+
+ u1.insert(500, 500)
+ assert(u1.size == 999)
+ assertCorrect(u1)
+
+ u1.insert(999, 999)
+ assert(u1.size == 1000)
+ assertCorrect(u1)
+
+ for (i <- -100 until 0) {
+ i +=: u1
+ assertCorrect(u1)
+ }
+ assert(u1.size == 1100)
+ assertCorrect(u1)
+ }
+
+ def assertCorrect(u1: UnrolledBuffer[Int]) {
+ val sz = u1.size
+ val store = new Array[Int](sz)
+ for (i <- 0 until sz) {
+ store(i) = u1(i)
+ u1(i) = sz - i
+ }
+ for (i <- 0 until sz) assert(u1(i) == (sz - i))
+ for (i <- 0 until sz) u1(i) = store(i)
+ for (i <- 0 until sz) assert(store(i) == u1(i))
+
+ assert((u1 map { x => x }) == u1)
+ assert(u1.iterator.toSeq.size == u1.size)
+ }
+
+}