packages feed

interval-algebra-1.0.0: test-axioms/AxiomsSpec.hs

{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleContexts #-}
module AxiomsSpec (spec) where

import Test.Hspec                 ( hspec, describe, it, Spec, )
import Test.Hspec.QuickCheck      ( modifyMaxSuccess )
import Test.QuickCheck            ( quickCheck
                                  , generate
                                  , Gen(..)
                                  , Arbitrary(arbitrary)
                                  , Property
                                  , Testable(property) )
import Data.Time                  ( Day, UTCTime )
import IntervalAlgebra.Axioms     ( IntervalAxioms(..) )


spec :: Spec
spec = do

  describe "An Axiomatization of Interval Time" $
    modifyMaxSuccess (*1000) $
    do
      it "M1" $ property (prop_IAaxiomM1 @Int)
      it "M1" $ property (prop_IAaxiomM1 @Day)
      it "M1" $ property (prop_IAaxiomM1 @UTCTime)

      it "M2" $ property (prop_IAaxiomM2 @Int)
      it "M2" $ property (prop_IAaxiomM2 @Day)
      it "M2" $ property (prop_IAaxiomM2 @UTCTime) 

      it "ML1" $ property (prop_IAaxiomML1 @Int)
      it "ML1" $ property (prop_IAaxiomML1 @Day)
      it "ML1" $ property (prop_IAaxiomML1 @UTCTime)

      it "ML2" $ property (prop_IAaxiomML2 @Int)
      it "ML2" $ property (prop_IAaxiomML2 @Day)
      it "ML2" $ property (prop_IAaxiomML2 @UTCTime)

      it "M3" $ property (prop_IAaxiomM3 @Int)
      it "M3" $ property (prop_IAaxiomM3 @Day)
      it "M3" $ property (prop_IAaxiomM3 @UTCTime)

      it "M4" $ property (prop_IAaxiomM4 @Int)
      it "M4" $ property (prop_IAaxiomM4 @Day)
      it "M4" $ property (prop_IAaxiomM4 @UTCTime)

      it "M5" $ property (prop_IAaxiomM5 @Int)
      it "M5" $ property (prop_IAaxiomM5 @Day)
      it "M5" $ property (prop_IAaxiomM5 @UTCTime)

      it "M4.1" $ property (prop_IAaxiomM4_1 @Int)
      it "M4.1" $ property (prop_IAaxiomM4_1 @Day)
      it "M4.1" $ property (prop_IAaxiomM4_1 @UTCTime)