summaryrefslogtreecommitdiff
path: root/test/files/scalacheck/redblacktree.scala
diff options
context:
space:
mode:
authorJuha Heljoranta <juha.heljoranta@iki.fi>2012-09-18 21:12:21 +0300
committerJuha Heljoranta <juha.heljoranta@iki.fi>2012-09-18 21:12:21 +0300
commit8a690b58467f5b6b0810c9bbacf47da7e6b1f46d (patch)
tree5bef4fabc3e81a114a725b5c87cb414c6ddaaef1 /test/files/scalacheck/redblacktree.scala
parentf994a6861bc480c397403e83a2b27e8098ba1f75 (diff)
downloadscala-8a690b58467f5b6b0810c9bbacf47da7e6b1f46d.tar.gz
scala-8a690b58467f5b6b0810c9bbacf47da7e6b1f46d.tar.bz2
scala-8a690b58467f5b6b0810c9bbacf47da7e6b1f46d.zip
Add RedBlackTree tests for take/drop/slice.
Addresses review feedback by axel22.
Diffstat (limited to 'test/files/scalacheck/redblacktree.scala')
-rw-r--r--test/files/scalacheck/redblacktree.scala42
1 files changed, 42 insertions, 0 deletions
diff --git a/test/files/scalacheck/redblacktree.scala b/test/files/scalacheck/redblacktree.scala
index e2609fa200..bc7f92aa1b 100644
--- a/test/files/scalacheck/redblacktree.scala
+++ b/test/files/scalacheck/redblacktree.scala
@@ -205,6 +205,45 @@ package scala.collection.immutable.redblacktree {
filteredTree == keysIterator(newTree).toList
}
}
+
+ object TestDrop extends RedBlackTreeTest with RedBlackTreeInvariants {
+ import RB._
+
+ override type ModifyParm = Int
+ override def genParm(tree: Tree[String, Int]): Gen[ModifyParm] = choose(0, iterator(tree).size)
+ override def modify(tree: Tree[String, Int], parm: ModifyParm): Tree[String, Int] = drop(tree, parm)
+
+ property("drop") = forAll(genInput) { case (tree, parm, newTree) =>
+ iterator(tree).drop(parm).toList == iterator(newTree).toList
+ }
+ }
+
+ object TestTake extends RedBlackTreeTest with RedBlackTreeInvariants {
+ import RB._
+
+ override type ModifyParm = Int
+ override def genParm(tree: Tree[String, Int]): Gen[ModifyParm] = choose(0, iterator(tree).size)
+ override def modify(tree: Tree[String, Int], parm: ModifyParm): Tree[String, Int] = take(tree, parm)
+
+ property("take") = forAll(genInput) { case (tree, parm, newTree) =>
+ iterator(tree).take(parm).toList == iterator(newTree).toList
+ }
+ }
+
+ object TestSlice extends RedBlackTreeTest with RedBlackTreeInvariants {
+ import RB._
+
+ override type ModifyParm = (Int, Int)
+ override def genParm(tree: Tree[String, Int]): Gen[ModifyParm] = for {
+ from <- choose(0, iterator(tree).size)
+ to <- choose(from, iterator(tree).size)
+ } yield (from, to)
+ override def modify(tree: Tree[String, Int], parm: ModifyParm): Tree[String, Int] = slice(tree, parm._1, parm._2)
+
+ property("slice") = forAll(genInput) { case (tree, parm, newTree) =>
+ iterator(tree).slice(parm._1, parm._2).toList == iterator(newTree).toList
+ }
+ }
}
object Test extends Properties("RedBlackTree") {
@@ -213,4 +252,7 @@ object Test extends Properties("RedBlackTree") {
include(TestModify)
include(TestDelete)
include(TestRange)
+ include(TestDrop)
+ include(TestTake)
+ include(TestSlice)
}