content: {-# LANGUAGE ImplicitParams #-}
  
  module Test.Colourista
      ( colouristaSpec
      ) where
  
  import Data.ByteString (ByteString)
  import Data.Text (Text)
  import Test.Hspec (Spec, describe, it, shouldBe)
  
  import Colourista (formatWith, italic, red, reset, yellow)
  import Colourista.Short (b, i, u)
  
  
  colouristaSpec :: Spec
  colouristaSpec = describe "Colourista tests" $ do
      describe "Colour codes are actual strings" $ do
          it "Yellow: String" $
              yellow @String `shouldBe` "\ESC[93m"
          it "Yellow: Text" $
              yellow @Text `shouldBe` "\ESC[93m"
          it "Yellow: ByteString" $
              yellow @ByteString `shouldBe` "\ESC[93m"
          it "Reset: Text" $
              reset @Text `shouldBe` "\ESC[0m"
  
      describe "Colourista.Short" $ do
          it "Bold" $
              b @Text "bold" `shouldBe` "\ESC[1mbold\ESC[0m"
          it "Italic" $
              i @Text "italic" `shouldBe` "\ESC[3mitalic\ESC[0m"
          it "Underline" $
              u @Text "underline" `shouldBe` "\ESC[4munderline\ESC[0m"
  
      describe "'formatWith' works" $ do
          it "Format with empty list" $
              formatWith @Text [] "text" `shouldBe` "text"
          it "Format with red italic" $
              formatWith @Text [red, italic] "text" `shouldBe` "\ESC[91m\ESC[3mtext\ESC[0m"
  