|
Scala example source code file (OptionalTest.scala)
The OptionalTest.scala Scala example source codepackage scalaz import Scalaz.Id import std.AllInstances._ object OptionalTest extends SpecLite { def definedTests[F[_],A](context: F[A], value: A, default: => A, alternative: => F[A])(implicit O: Optional[F], EA: Equal[A], EFA: Equal[F[A]], SA: Show[A], SFA: Show[F[A]]) = { O.getOrElse(context)(default) must_===(value) O.isDefined(context) must_===(true) O.orElse(context)(alternative) must_===(context) O.nonEmpty(context) must_===(true) O.isEmpty(context) must_===(false) O.?(context)(1,0) must_===(1) O.toOption(context) must_===(Option(value)) O.toMaybe(context) must_===(Maybe.just(value)) } def undefinedTests[F[_],A](context: F[A], default: A, alternative: F[A])(implicit O: Optional[F], EA: Equal[A], EFA: Equal[F[A]], SA: Show[A], SFA: Show[F[A]]) = { O.getOrElse(context)(default) must_===(default) O.isDefined(context) must_===(false) O.orElse(context)(alternative) must_===(alternative) O.nonEmpty(context) must_===(false) O.isEmpty(context) must_===(true) O.?(context)(1,0) must_===(0) O.toOption(context) must_===(Option.empty[A]) O.toMaybe(context) must_===(Maybe.empty[A]) } """\/ instance tests""" in { type EitherInt[A] = Int \/ A def right(a: Int): EitherInt[Int] = \/.right(a) def left(a: Int): EitherInt[Int] = \/.left(a) definedTests(right(1), 1, 0, right(0)) undefinedTests(left(0), 0, right(0)) } // currently there are no Equal[LazyEither], Show[LazyEither] // """LazyEither instance tests""" in { // type LEInt[A] = LazyEither[Int,A] // def right(a: Int): LEInt[Int] = LazyEither.lazyRight(a) // def left(a: Int): LEInt[Int] = LazyEither.lazyLeft(a) // definedTests(right(1), 1, 0, right(0)) // undefinedTests(left(0), 0, right(0)) // } // currently there is no Show[LazyOption] // "LazyOption instance tests" in { // definedTests(LazyOption.lazySome(1), 1, 0, LazyOption.lazySome(0)) // undefinedTests(LazyOption.lazyNone[Int], 0, LazyOption.lazySome(0)) // } "Option instance tests" in { definedTests(Option(1), 1, 0, Option(0)) undefinedTests(Option.empty[Int], 0, Option(0)) } """Validation instance tests""" in { type VString[A] = Validation[String,A] def success(a: Int): VString[Int] = Validation.success(a) def failure(s: String): VString[Int] = Validation.failure(s) definedTests[VString, Int](success(1), 1, 0, success(0)) undefinedTests[VString, Int](failure("oO"), 0, success(0)) } """ValidationNel instance tests""" in { type VStringNel[A] = ValidationNel[String, A] def successNel(a: Int): VStringNel[Int] = Validation.success(a) def failureNel(s: String): VStringNel[Int] = Validation.failureNel(s) definedTests[VStringNel, Int](successNel(1), 1, 0, successNel(0)) undefinedTests[VStringNel, Int](failureNel("oO"), 0, successNel(0)) } "Id instance tests" in { definedTests[Id, Int](1, 1, 0, 0) } "Maybe instance tests" in { definedTests(Maybe.just(1), 1, 0, Maybe.just(0)) undefinedTests(Maybe.empty[Int], 0, Maybe.just(0)) } "syntax test" in { import syntax.optional._ val value = Option(1) ( value.getOrElse(0) ) must_===(1) ( value.isDefined ) must_===(true) ( value.orElse(Option(0)) ) must_===(value) ( value.nonEmpty ) must_===(true) ( value.isEmpty ) must_===(false) ( value ? 1 | 0 ) must_===(1) ( value.toOption ) must_===(value) } } Other Scala examples (source code examples)Here is a short list of links related to this Scala OptionalTest.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.