prizm-2.0.0: tests/QC/RGB.hs
{-# LANGUAGE FlexibleInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module QC.RGB (tests) where
import Control.Monad (liftM3)
import Data.Convertible
import Data.Prizm.Color (Hex, RGB (..))
import Data.Prizm.Color.CIE as CIE
import Test.Framework (Test)
import Test.Framework.Providers.QuickCheck2 as QuickCheck
import Test.QuickCheck
instance Arbitrary RGB where
arbitrary = liftM3 RGB (choose rgbRange) (choose rgbRange) (choose rgbRange)
where
rgbRange = (0, 255)
rgb2XYZ :: RGB -> Bool
rgb2XYZ gVal = gVal == iso
where
iso = convert ((convert gVal) :: CIE.XYZ)
rgb2HEX :: RGB -> Bool
rgb2HEX gVal = gVal == iso
where
iso = convert ((convert gVal) :: Hex)
tests :: [Test]
tests =
[ QuickCheck.testProperty "RGB <-> CIE XYZ" rgb2XYZ
, QuickCheck.testProperty "HEX <-> RGB " rgb2HEX
]