module Main (main) where
import Colour.Text.CssRgb (readHex, showDecTransparent, showHex)
import Data.Colour.RGBSpace (RGB (RGB))
import Data.Word (Word8)
import Hedgehog (Gen, forAll, (===))
import qualified Hedgehog.Gen as Gen
import Test.Hspec (describe, hspec, shouldBe, specify)
import Test.Hspec.Hedgehog (hedgehog)
main :: IO ()
main = hspec $ do
describe "showHex" $ do
let colour ~> text = showHex colour `shouldBe` text
specify "black" $ RGB 0 0 0 ~> "#000000"
specify "white" $ RGB 255 255 255 ~> "#ffffff"
specify "off-black" $ RGB 1 1 1 ~> "#010101"
specify "red" $ RGB 255 0 0 ~> "#ff0000"
specify "green" $ RGB 0 255 0 ~> "#00ff00"
specify "blue" $ RGB 0 0 255 ~> "#0000ff"
describe "showDecTransparent" $ do
let colour ~> text = showDecTransparent colour `shouldBe` text
specify "black" $ RGB 0 0 0 ~> "rgba(0, 0, 0, 0)"
specify "white" $ RGB 255 255 255 ~> "rgba(255, 255, 255, 0)"
specify "red" $ RGB 255 0 0 ~> "rgba(255, 0, 0, 0)"
specify "green" $ RGB 0 255 0 ~> "rgba(0, 255, 0, 0)"
specify "blue" $ RGB 0 0 255 ~> "rgba(0, 0, 255, 0)"
describe "readHex" $ do
specify "is showHex's inverse" $ hedgehog do
colour <- forAll genColour
readHex (showHex colour) === Just colour
genColour :: Gen (RGB Word8)
genColour = RGB <$> Gen.enumBounded <*> Gen.enumBounded <*> Gen.enumBounded