package monads

import org.scalatest._
import testutil.PendingIfUnimplemented

class MonadFunctorSpec extends FlatSpec with Matchers with AppendedClues with PendingIfUnimplemented {
  "functorFromMonad" should "return a working functor" in {
    Functor.functorFromMonad[Option](new Monad[Option] {
      def unit[A](a: A): Option[A] = Some(a)
      def flatMap[A, B](fa: Option[A])(f: A => Option[B]): Option[B] =
        fa.flatMap(f)
    }).map[Int, String](Some(3))(_.toString) shouldBe Some("3")
  }
}