|
Scala example source code file (TreeTestJVM.scala)
The TreeTestJVM.scala Scala example source code
package scalaz
import scalaz.scalacheck.ScalazArbitrary._
import Tree._
import org.scalacheck.Gen
import org.scalacheck.Prop.forAll
import std.AllInstances._
object TreeTestJVM extends SpecLite {
val E = Equal[Tree[Int]]
"ScalazArbitrary.treeGenSized" ! forAll(Gen.choose(1, 200)){ size =>
val gen = treeGenSized[Unit](size)
Stream.continually(gen.sample).flatten.take(10).map(Foldable[Tree].length(_)).forall(_ == size)
}
def genTree(size: Int): Tree[Int] =
(1 to size).foldLeft(Leaf(0))((x, y) => Node(y, Stream(x)))
val size = 100000
val deepTree = genTree(size)
"deep foldMap should not cause a stack overflow" ! {
deepTree.foldMap(identity) must_== (1 to size).sum
}
"deep Tree flatten should not cause a stack overflow" ! {
deepTree.flatten must_== (size to 0 by -1).toStream
}
"deep Equal.equal should not cause a stack overflow" ! {
E.equal(deepTree, deepTree) must_== true
}
"deep Tree toStrictTree should not cause a stack overflow" ! {
val expectedTree = StrictTreeTestJVM.deepTree
val actualTree = deepTree.toStrictTree
StrictTreeTestJVM.E.equal(actualTree, expectedTree) must_== true
}
"deep flatMap should not cause a stack overflow" ! {
E.equal(deepTree.flatMap(Leaf(_)), deepTree) must_== true
}
}
Other Scala examples (source code examples)Here is a short list of links related to this Scala TreeTestJVM.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.