|
Scala example source code file (VectorTest.scala)
The VectorTest.scala Scala example source code
package scalaz
package std
import org.scalacheck.Arbitrary
import std.AllInstances._
import scalaz.scalacheck.ScalazProperties._
import Id._
import org.scalacheck.Prop.forAll
object VectorTest extends SpecLite {
implicit def vectorArb[A: Arbitrary] =
Arbitrary(implicitly[Arbitrary[List[A]]].arbitrary map (_.toVector))
import std.vector._
checkAll(equal.laws[Vector[Int]])
checkAll(monoid.laws[Vector[Int]])
checkAll(monadPlus.strongLaws[Vector])
checkAll(bindRec.laws[Vector])
checkAll(traverse.laws[Vector])
checkAll(FoldableTests.anyAndAllLazy[Vector])
checkAll(zip.laws[Vector])
checkAll(isEmpty.laws[Vector])
checkAll(align.laws[Vector])
import std.vector.vectorSyntax._
import syntax.foldable._
private def evenp(x: Int): Boolean = x % 2 == 0
"filterM" ! forAll {
(xs: Vector[Int]) => xs.filterM[Id](evenp) == xs.filter(_ % 2 == 0)
}
"filter consistent with fiterM[Id]" ! forAll {
(xs: Vector[Int], p: Int => Boolean) => MonadPlus[Vector].filter(xs)(p) must_=== xs.filterM[Id](p)
}
"initz" ! forAll {
(xs: Vector[Int]) =>
initz(xs) must_===(xs.inits.toVector.reverse)
}
"tailz" ! forAll {
(xs: Vector[Int]) => tailz(xs) must_===(xs.tails.toVector)
}
"spanM" ! forAll {
(xs: Vector[Int]) =>
(xs.spanM[Id](evenp)
must_===(xs.takeWhile(evenp) -> xs.dropWhile(evenp)))
}
"takeWhileM" ! forAll {
(xs: Vector[Int]) =>
takeWhileM[Int, Id](xs)(evenp) must_===(xs takeWhile evenp)
}
"groupWhen" ! forAll {
(xs: Vector[Int]) =>
(xs.groupWhen(_ < _)
must_===(list.groupWhen(xs.toList)(_ < _)
.map(_.toVector).toVector))
}
"partitionM" ! forAll {
(xs: Vector[Int]) =>
val (evens, odds) = xs.partitionM[Id](evenp)
(evens.toSet & odds.toSet) must_===(Set[Int]())
(evens.filter(evenp) ++
odds.filter(i => !evenp(i))).toSet must_===(xs.toSet)
}
"findM" ! forAll {
(xs: Vector[Int]) =>
val i = xs indexWhere evenp
type W[A] = Writer[Vector[Int], A]
val wxs = findM[Int, W](xs)(x =>
WriterT.writer(Vector(x) -> evenp(x)))
(wxs.written, wxs.value) must_==={
if (i < 0) (xs, None)
else (xs take (i+1), Some(xs(i)))
}
}
"mapAccumLeft" ! forAll {
(xs: Vector[Int]) =>
mapAccumLeft(xs)(Vector[Int](), (c: Vector[Int], a) =>
(c :+ a, a)) must_===(xs, xs)
}
"mapAccumRight" ! forAll {
(xs: Vector[Int]) =>
mapAccumRight(xs)(Vector[Int](), (c: Vector[Int], a) =>
(c :+ a, a)) must_===(xs.reverse, xs)
}
"Issue #266" in {
import syntax.std.list._
List(1, 2, 4).groupWhen((i1, i2) => scala.math.abs(i1 - i2) <= 1).length must_===(2)
List(1, 2, 4).toVector.groupWhen((i1, i2) => scala.math.abs(i1 - i2) <= 1).length must_===(2)
}
"index" ! forAll { (xs: Vector[Int], n: Int) =>
(xs index n) must_===(if (n >= 0 && xs.size > n) Some(xs(n)) else None)
}
"groupWhen is groupWhenM[Id]" ! forAll { xs: Vector[Int] =>
val f: (Int, Int) => Boolean = _ > _
xs.groupWhen(f) must_=== xs.groupWhenM[Id.Id](f)
}
object instances {
def equal[A: Equal] = Equal[Vector[A]]
def order[A: Order] = Order[Vector[A]]
def semigroup[A: Semigroup] = Monoid[Vector[A]]
def bindRec = BindRec[Vector]
def monadPlus = MonadPlus[Vector]
def traverse = Traverse[Vector]
def zip = Zip[Vector]
def unzip = Unzip[Vector]
def align = Align[Vector]
def isEmpty = IsEmpty[Vector]
}
}
Other Scala examples (source code examples)Here is a short list of links related to this Scala VectorTest.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.