content: {-# LANGUAGE AllowAmbiguousTypes #-}
  {-# LANGUAGE DataKinds #-}
  {-# LANGUAGE PolyKinds #-}
  {-# LANGUAGE ScopedTypeVariables #-}
  {-# LANGUAGE TypeApplications #-}
  module Graphics.Color.Illuminant.CIE1964Spec (spec) where
  
  import Graphics.Color.Space.Common
  import Graphics.Color.Illuminant.Common
  import Graphics.Color.Illuminant.CIE1964
  
  spec :: Spec
  spec =
    describe "Wikipedia" $ do
      describe "IlluminantSpec" $ do
        illuminantSpec @'A
        illuminantSpec @'B
        illuminantSpec @'C
        illuminantSpec @'D50
        illuminantSpec @'D55
        illuminantSpec @'D60
        illuminantSpec @'D65
        illuminantSpec @'D75
        illuminantSpec @'E
        illuminantSpec @'FL1
        illuminantSpec @'FL2
        illuminantSpec @'FL3
        illuminantSpec @'FL4
        illuminantSpec @'FL5
        illuminantSpec @'FL6
        illuminantSpec @'FL7
        illuminantSpec @'FL8
        illuminantSpec @'FL9
        illuminantSpec @'FL10
        illuminantSpec @'FL11
        illuminantSpec @'FL12
      describe "Derived Classes" $ do
        let is = [A .. FL12]
        it "Bounded" $ [minBound .. maxBound] `shouldBe` is
        it "Enum" $ forM_ is $ \ i -> toEnum (fromEnum i) `shouldBe` i
        it "Read . Show" $ forM_ is $ \ i -> read (show i) `shouldBe` i
        it "Read . Show" $  read (show is) `shouldBe` (is :: [CIE1964])
  