hgrib-0.1.0.0: test/Data/Grib/Raw/ContextSpec.hs
{- |
Module : Data.Grib.Raw.ContextSpec
Copyright : (c) Mattias Jakobsson 2015
License : GPL-3
Maintainer : mjakob422@gmail.com
Stability : unstable
Portability : portable
Unit and regression tests for Data.Grib.Raw.Context.
-}
module Data.Grib.Raw.ContextSpec (main, spec) where
import Control.Exception (bracket)
import Test.Hspec
import Data.Grib.Raw.Context
main :: IO ()
main = hspec spec
withGribexMode :: GribContext -> IO () -> IO ()
withGribexMode ctx action =
bracket saveMode restoreMode (const action)
where saveMode = gribGetGribexMode ctx
restoreMode True = gribGribexModeOn ctx
restoreMode False = gribGribexModeOff ctx
spec :: Spec
spec = do
let ctx = defaultGribContext
describe "gribContextGetDefault" $
it "should not return a null context" $
gribContextGetDefault `shouldNotReturn` defaultGribContext
describe "gribContextNew" $ do
it "should not return a null context" $
gribContextNew ctx `shouldNotReturn` defaultGribContext
it "should not return the default context" $
gribContextGetDefault >>= (gribContextNew ctx `shouldNotReturn`)
describe "gribGtsHeaderOff" $
it "should return nothing" $
gribGtsHeaderOff ctx `shouldReturn` ()
describe "gribGtsHeaderOn" $ after_ (gribGtsHeaderOff ctx) $
it "should return nothing" $
gribGtsHeaderOn ctx `shouldReturn` ()
describe "gribGribexModeOn" $ around_ (withGribexMode ctx) $
it "should enable gribex mode" $ do
gribGribexModeOn ctx `shouldReturn` ()
gribGetGribexMode ctx `shouldReturn` True
describe "gribGribexModeOff" $ around_ (withGribexMode ctx) $
it "should disable gribex mode" $ do
gribGribexModeOff ctx `shouldReturn` ()
gribGetGribexMode ctx `shouldReturn` False
describe "gribMultiSupportOff" $
it "should return nothing" $
gribMultiSupportOff ctx `shouldReturn` ()
describe "gribMultiSupportOn" $ after_ (gribMultiSupportOff ctx) $
it "should return nothing" $
gribMultiSupportOn ctx `shouldReturn` ()