diff options
author | Juha Heljoranta <juha.heljoranta@iki.fi> | 2012-09-18 21:12:21 +0300 |
---|---|---|
committer | Juha Heljoranta <juha.heljoranta@iki.fi> | 2012-09-18 21:12:21 +0300 |
commit | 8a690b58467f5b6b0810c9bbacf47da7e6b1f46d (patch) | |
tree | 5bef4fabc3e81a114a725b5c87cb414c6ddaaef1 /test | |
parent | f994a6861bc480c397403e83a2b27e8098ba1f75 (diff) | |
download | scala-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')
-rw-r--r-- | test/files/scalacheck/redblacktree.scala | 42 |
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) } |