packages feed

saturn-0.2.0.0: source/libraries/spec/SaturnSpec.hs

module SaturnSpec where

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 :: Hspec.Spec
spec = Hspec.describe "Saturn" $ do
  Hspec.describe "round trips" $ do
    Hspec.it "through string"
      . QuickCheck.forAllShrink ScheduleSpec.arbitrary ScheduleSpec.shrink
      $ \schedule ->
        Parse.fromString (Render.toString schedule) `Hspec.shouldBe` Right schedule

    Hspec.it "through strict text"
      . QuickCheck.forAllShrink ScheduleSpec.arbitrary ScheduleSpec.shrink
      $ \schedule ->
        Parse.fromText (Render.toText schedule) `Hspec.shouldBe` Right schedule

    Hspec.it "through lazy text"
      . QuickCheck.forAllShrink ScheduleSpec.arbitrary ScheduleSpec.shrink
      $ \schedule ->
        Parse.fromLazyText (Render.toLazyText schedule) `Hspec.shouldBe` Right schedule