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