aboutsummaryrefslogtreecommitdiff
path: root/tests/disabled/long-running/vector1.scala
diff options
context:
space:
mode:
Diffstat (limited to 'tests/disabled/long-running/vector1.scala')
-rw-r--r--tests/disabled/long-running/vector1.scala199
1 files changed, 199 insertions, 0 deletions
diff --git a/tests/disabled/long-running/vector1.scala b/tests/disabled/long-running/vector1.scala
new file mode 100644
index 000000000..d53618396
--- /dev/null
+++ b/tests/disabled/long-running/vector1.scala
@@ -0,0 +1,199 @@
+// testing the impl from the scala library
+//package test5
+
+import scala.collection._
+import scala.collection.immutable._
+
+import scala.collection.generic._
+import scala.collection.mutable.Builder
+
+
+object Test {
+
+ def vector(label: String, n: Int): Vector[String] = {
+ val a = new VectorBuilder[String]
+ for (i <- 0 until n)
+ a += (label + i)
+
+ val res = a.result
+ assertVector(res, label, 0, n)
+ }
+
+ def vectorForward(label: String, n: Int): Vector[String] = {
+ var a: Vector[String] = Vector.empty
+ for (i <- 0 until n)
+ a = a :+ (label + i)
+
+ assertVector(a, label, 0, n)
+ }
+
+ def vectorBackward(label: String, n: Int): Vector[String] = {
+ var a: Vector[String] = Vector.empty
+ for (i <- 0 until n)
+ a = (label + (n-1-i)) +: a
+
+ assertVector(a, label, 0, n)
+ }
+
+ def assertVector[V](a: Vector[V], label: String, start: Int, end: Int) = {
+ assertVectorIndexed(a, label, start, end)
+ assertVectorIterated(a, label, start, end)
+ }
+
+ def assertVectorIndexed[V](a: Vector[V], label: String, start: Int, end: Int) = {
+ val res = a
+ assert(res.length == (end-start), res.length+"!="+(end-start)+" ("+res+")")
+ for (i <- start until end) {
+ assert(res(i) == (label + i), ""+res(i)+"!="+(label + i))
+ }
+ res
+ }
+
+ def assertVectorIterated[V](a: Vector[V], label: String, start: Int, end: Int) = {
+ val res = a
+ assert(res.length == (end-start), res.length+"!="+(end-start)+" ("+res+")")
+ var i = start
+ var it = res.iterator
+ while(it.hasNext) {
+ val x = it.next()
+ assert(x == (label + i), x.toString+"!="+(label + i))
+ i += 1
+ }
+ assert(i == end)
+ res
+ }
+
+
+
+ def test1() = {
+ println("===== test1 =====")
+
+ val N = 150000
+ val a = vector("a", N)
+ val b = vectorForward("b", N)
+ val c = vectorBackward("b", N)
+
+ ()
+// //println(a)
+ }
+
+ def test2() = {
+ println("===== test2 =====")
+
+ var a: Vector[String] = Vector.empty
+
+ val rand = new java.util.Random
+
+ val N = 150000
+ var min = N/2//rand.nextInt(N)
+ var max = min
+
+ val chunkLimit = 11
+
+ def nextChunkSize = 3 //rand.nextInt(chunkLimit)
+
+ def seqBack() = for (i <- 0 until Math.min(nextChunkSize, N-max)) { a = a :+ ("a"+max); max += 1 }
+ def seqFront() = for (i <- 0 until Math.min(nextChunkSize, min)) { min -= 1; a = ("a"+min) +: a }
+
+ try {
+
+ while (min > 0 || max < N) {
+ seqFront()
+ seqBack()
+ }
+ } catch {
+ case ex: Throwable =>
+ //println("----------------")
+ //a.debug
+ throw ex
+ }
+
+ assertVector(a, "a", 0, N)
+ }
+
+
+
+ def test3() = {
+ println("===== test3 =====")
+
+ val N = 150000
+ val a = vector("a", N)
+
+ val pos = scala.util.Random.shuffle(scala.collection.mutable.WrappedArray.make[Int](Array.tabulate[Int](N)(i => i)))
+
+ var b = a
+
+ {
+ var i = 0
+ while (i < N) {
+ b = b.updated(pos(i), "b"+(pos(i)))
+ i += 1
+ }
+
+ assertVector(b, "b", 0, N)
+ }
+
+// //println(a)
+ }
+
+ def test4() = {
+ println("===== test4 =====")
+
+ val N = 150000
+ val a = vectorForward("a", N)
+
+ {
+ var i = 0
+ var it = a
+ while (i < N) {
+ assert(it.length == (N-i), it.length+" items at iteration "+i)
+ val x = it(0)
+ val y = it(N-i-1)
+ assert(x == "a"+i, x+"!=a"+i)
+ assert(y == "a"+(N-1), y+"!=a"+(N-1))
+ it = it.drop(1)
+ i += 1
+ }
+ assert(it.length == 0)
+ }
+
+// //println(a)
+ }
+
+ def test5() = {
+ println("===== test5 =====")
+
+ val N = 150000
+ val a = vectorBackward("a", N)
+
+ {
+ var i = 0
+ var it = a
+ while (i < N) {
+ assert(it.length == (N-i), it.length+" items at iteration "+i)
+ val x = it(0)
+ val y = it(N-i-1)
+// println("x " + x + "/" + i)
+// println("y " + y)
+ assert(x == "a0", x+"!=a0")
+ assert(y == "a"+(N-i-1), y+"!=a"+(N-i-1))
+ it = it.dropRight(1)
+ i += 1
+ }
+ assert(it.length == 0)
+ }
+ }
+
+ def main(args: Array[String]) = {
+
+ test1()
+ test2()
+ test3()
+ test4()
+ test5()
+
+ println("done")
+ }
+
+}
+