diff --git a/Test1.scala b/Test1.scala new file mode 100644 index 0000000000000000000000000000000000000000..6cd5734cd39ed79c022cf2f9207aa805a21236fb --- /dev/null +++ b/Test1.scala @@ -0,0 +1,27 @@ +import funcheck.lib.Specs._ +import org.scalacheck.{Gen, Arbitrary} + +object HeapTest { + sealed abstract class Middle extends Top + case class E() extends Middle + @generator sealed abstract class Top + case class Elem(i: Int, j: Int) + + @generator def create(): E = E() + //@generator def create2(i: Int): Elem = Elem(i) + + def genE = Gen.value(E()) + def genE2 = Gen.value(E()) + + @generator + def genElemSynthetic(a: Int, b: Int) = Elem(a,b) + + def genElem = for { + v2 <- Arbitrary.arbitrary[Int] + v1 <- Arbitrary.arbitrary[Int] + } yield Elem(v2,v2) + + implicit def arbE: Arbitrary[E] = Arbitrary(Gen.oneOf(genE,genE2)) + + forAll[(Elem,Elem,Int)]( p => 1+1 == 2) +} \ No newline at end of file diff --git a/Test2.scala b/Test2.scala new file mode 100644 index 0000000000000000000000000000000000000000..667c7e1ae75e1411a6cefca10219d42b26c69add --- /dev/null +++ b/Test2.scala @@ -0,0 +1,31 @@ +import funcheck.lib.Specs._ +import org.scalacheck.{Gen, Arbitrary} + +object HeapTest { + @generator + sealed abstract class Tree + case class Leaf() extends Tree + case class Node(left: Tree, right: Tree, v:Int) extends Tree + + @generator def create(left: Tree, right: Tree, v: Int): Node = Node(left,right,v) + + case class Elem (i: Int, j: Int, k: Int) + + def genElem: Gen[Elem] = for { + i <- Arbitrary.arbitrary[Int] + j <- Arbitrary.arbitrary[Int] + k <- Arbitrary.arbitrary[Int] + } yield Elem(i,j,k) + + def genLeaf = Gen.value(Leaf()) + def genTree: Gen[Tree] = Gen.oneOf(genLeaf,genNode) + def genNode = for { + v1 <- Arbitrary.arbitrary[Tree] + v2 <- Arbitrary.arbitrary[Tree] + v3 <- Arbitrary.arbitrary[Int] + } yield Node(v1,v2,v3) + + implicit def arbTree: Arbitrary[Tree] = Arbitrary(genTree) + + +} \ No newline at end of file diff --git a/Test3.scala b/Test3.scala new file mode 100644 index 0000000000000000000000000000000000000000..705509819b1bc77e897026427587fcf92bb569b1 --- /dev/null +++ b/Test3.scala @@ -0,0 +1,20 @@ +import funcheck.lib.Specs._ +import org.scalacheck.{Gen, Arbitrary} + +object HeapTest { + + @generator sealed abstract class Tree + case class Node(left: Tree, right: Tree) extends Tree + case class Leaf() extends Tree + + def genLeaf: Gen[Leaf] = Gen.value[Leaf](Leaf()) + + def genNode: Gen[Node] = for { + v1 <- Arbitrary.arbitrary[Tree] + v2 <- Arbitrary.arbitrary[Tree] + } yield Node(v1,v2) + + implicit def arbTree: Arbitrary[Tree] = Arbitrary(genTree) + def genTree: Gen[Tree] = Gen.oneOf(genLeaf,genNode) + +} \ No newline at end of file