From e159530bfe98bc7ef4d41e51a2060534f434d6d5 Mon Sep 17 00:00:00 2001 From: Tiark Rompf Date: Mon, 2 Nov 2009 06:57:38 +0000 Subject: fixed problem with Vector.dropRight, added addi... fixed problem with Vector.dropRight, added additional test case --- test/files/run/vector1.check | 6 ++ test/files/run/vector1.scala | 199 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 205 insertions(+) create mode 100644 test/files/run/vector1.check create mode 100644 test/files/run/vector1.scala (limited to 'test') diff --git a/test/files/run/vector1.check b/test/files/run/vector1.check new file mode 100644 index 0000000000..10447a0964 --- /dev/null +++ b/test/files/run/vector1.check @@ -0,0 +1,6 @@ +===== test1 ===== +===== test2 ===== +===== test3 ===== +===== test4 ===== +===== test5 ===== +done diff --git a/test/files/run/vector1.scala b/test/files/run/vector1.scala new file mode 100644 index 0000000000..320bef220c --- /dev/null +++ b/test/files/run/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.appendBack(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 = a.appendFront(label + (n-1-i)) + + 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.appendBack("a"+max); max += 1 } + def seqFront() = for (i <- 0 until Math.min(nextChunkSize, min)) { min -= 1; a = a.appendFront("a"+min) } + + try { + + while (min > 0 || max < N) { + seqFront() + seqBack() + } + } catch { + case ex => + //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") + } + +} + -- cgit v1.2.3