module Saturn.Unstable.RenderSpec where import qualified Saturn.Unstable.Render as Render import qualified Saturn.Unstable.Type.ScheduleSpec as ScheduleSpec import qualified Test.Hspec as Hspec spec :: Hspec.Spec spec :: Spec spec = forall a. HasCallStack => String -> SpecWith a -> SpecWith a Hspec.describe String "Saturn.Unstable.Render" forall a b. (a -> b) -> a -> b $ do forall a. HasCallStack => String -> SpecWith a -> SpecWith a Hspec.describe String "toString" forall a b. (a -> b) -> a -> b $ do forall a. (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) Hspec.it String "works with wildcards" forall a b. (a -> b) -> a -> b $ do Schedule schedule <- forall (m :: * -> *). MonadFail m => [[Word8]] -> [[Word8]] -> [[Word8]] -> [[Word8]] -> [[Word8]] -> m Schedule ScheduleSpec.new [] [] [] [] [] Schedule -> String Render.toString Schedule schedule forall a. (HasCallStack, Show a, Eq a) => a -> a -> IO () `Hspec.shouldBe` String "* * * * *" forall a. (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) Hspec.it String "works with numbers" forall a b. (a -> b) -> a -> b $ do Schedule schedule <- forall (m :: * -> *). MonadFail m => [[Word8]] -> [[Word8]] -> [[Word8]] -> [[Word8]] -> [[Word8]] -> m Schedule ScheduleSpec.new [[Word8 4]] [[Word8 3]] [[Word8 2]] [[Word8 1]] [[Word8 0]] Schedule -> String Render.toString Schedule schedule forall a. (HasCallStack, Show a, Eq a) => a -> a -> IO () `Hspec.shouldBe` String "4 3 2 1 0" forall a. (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) Hspec.it String "works with ranges" forall a b. (a -> b) -> a -> b $ do Schedule schedule <- forall (m :: * -> *). MonadFail m => [[Word8]] -> [[Word8]] -> [[Word8]] -> [[Word8]] -> [[Word8]] -> m Schedule ScheduleSpec.new [[Word8 8, Word8 9]] [[Word8 6, Word8 7]] [[Word8 4, Word8 5]] [[Word8 2, Word8 3]] [[Word8 0, Word8 1]] Schedule -> String Render.toString Schedule schedule forall a. (HasCallStack, Show a, Eq a) => a -> a -> IO () `Hspec.shouldBe` String "8-9 6-7 4-5 2-3 0-1" forall a. (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) Hspec.it String "works with choices" forall a b. (a -> b) -> a -> b $ do Schedule schedule <- forall (m :: * -> *). MonadFail m => [[Word8]] -> [[Word8]] -> [[Word8]] -> [[Word8]] -> [[Word8]] -> m Schedule ScheduleSpec.new [[Word8 8], [Word8 9]] [[Word8 6], [Word8 7]] [[Word8 4], [Word8 5]] [[Word8 2], [Word8 3]] [[Word8 0], [Word8 1]] Schedule -> String Render.toString Schedule schedule forall a. (HasCallStack, Show a, Eq a) => a -> a -> IO () `Hspec.shouldBe` String "8,9 6,7 4,5 2,3 0,1"