{-# LANGUAGE OverloadedStrings #-} module Hasmin.Types.FilterFunctionSpec where import Data.Text (Text) import Hasmin.Parser.Value import Hasmin.Types.FilterFunction import Hasmin.TestUtils filterTests :: Spec filterTests = describe " minification tests" $ mapM_ (matchSpecWithDesc f) filterTestsInfo where f = minifyWithTestConfig <$> value quickcheckFilter :: Spec quickcheckFilter = describe "Quickcheck tests" $ it "Minified maintains semantical equivalence" $ property (prop_minificationEq :: FilterFunction -> Bool) filterTestsInfo :: [(String, Text, Text)] filterTestsInfo = [("Minifies the value in drop-shadow()" ,"drop-shadow(1px 1px 1px #ff0000)" ,"drop-shadow(1px 1px 1px red)") ,("Minifies the values in drop-shadow()" ,"drop-shadow(12px 12px 12px red)" ,"drop-shadow(9pt 9pt 9pt red)") ,("Removes 3rd value in drop-shadow() when it is 0" ,"drop-shadow(1px 1px 0 red)" ,"drop-shadow(1px 1px red)") ,("Minifies in hue-rotate()" ,"hue-rotate(100grad)" ,"hue-rotate(90deg)") ,("Minifies in blur()" ,"blur(12px)" ,"blur(9pt)") ,("Minifies 100% in contrast()" ,"contrast(100%)" ,"contrast(1)") ,("Minifies 0% to 0" ,"grayscale(0%)" ,"grayscale(0)") ,("Minifies multiple of 10" ,"brightness(50%)" ,"brightness(.5)") ,("Normalizes to when > 10" ,"invert(11%)" ,"invert(.11)") ,("Does not minify when > 0 and < 10" ,"opacity(8%)" ,"opacity(8%)") ] spec :: Spec spec = do filterTests quickcheckFilter main :: IO () main = hspec spec