packages feed

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