saturn-1.1.0.0: source/library/SaturnSpec.hs
module SaturnSpec where
import qualified Heck
import qualified Saturn.Unstable.Parse as Parse
import qualified Saturn.Unstable.Render as Render
import qualified Saturn.Unstable.Type.ScheduleSpec as ScheduleSpec
import qualified Test.Hspec as Hspec
import qualified Test.QuickCheck as QuickCheck
spec :: (Monad n) => Heck.Test IO n -> n ()
spec t = Heck.describe t "Saturn" $ do
Heck.describe t "round trips" $ do
Heck.it t "through string"
. QuickCheck.quickCheck
. QuickCheck.forAllShrink ScheduleSpec.arbitrary ScheduleSpec.shrink
$ \schedule ->
Parse.fromString (Render.toString schedule) `Hspec.shouldBe` Right schedule
Heck.it t "through strict text"
. QuickCheck.quickCheck
. QuickCheck.forAllShrink ScheduleSpec.arbitrary ScheduleSpec.shrink
$ \schedule ->
Parse.fromText (Render.toText schedule) `Hspec.shouldBe` Right schedule
Heck.it t "through lazy text"
. QuickCheck.quickCheck
. QuickCheck.forAllShrink ScheduleSpec.arbitrary ScheduleSpec.shrink
$ \schedule ->
Parse.fromLazyText (Render.toLazyText schedule) `Hspec.shouldBe` Right schedule