hasklepias-0.8.3: test/FeatureCompose/CriteriaSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module FeatureCompose.CriteriaSpec (spec) where
import FeatureCompose
import FeatureCompose.Criteria
import Test.Hspec ( describe, pending, shouldBe, it, Spec )
f1 :: Feature String Bool
f1 = MkFeature "f1" "" (featureDataR [True, False, True])
f2 :: Feature String Bool
f2 = MkFeature "f2" "" (featureDataR [True, True, True])
f3 :: Feature String Bool
f3 = MkFeature "f3" "" (featureDataR [True, True, True])
spec :: Spec
spec = do
describe "checking d1" $
do
it "include f2/include f3" $
runCriteria (MkCriteria [include f2, include f3]) `shouldBe`
featureDataR [Included, Included, Included ]
it "exclude f2/include f3" $
runCriteria (MkCriteria [exclude f2, include f3]) `shouldBe`
featureDataR [ExcludedBy 1, ExcludedBy 1, ExcludedBy 1]
it "include f2/exclude f3" $
runCriteria (MkCriteria [include f2, exclude f3]) `shouldBe`
featureDataR [ExcludedBy 2, ExcludedBy 2, ExcludedBy 2]
it "exclude f3/exclude f3" $
runCriteria (MkCriteria [exclude f2, exclude f3]) `shouldBe`
featureDataR [ExcludedBy 1, ExcludedBy 1, ExcludedBy 1]
it "include f1/exclude f3" $
runCriteria (MkCriteria [include f1, exclude f2]) `shouldBe`
featureDataR [ExcludedBy 2, ExcludedBy 1, ExcludedBy 2]
-- it "" $
-- runCriteria (MkCriteria [ include (MkFeature "f1" "" (featureDataR []))])
-- `shouldBe` featureDataL Excluded