hgrib-0.1.0.0: test/Data/Grib/Raw/IteratorSpec.hs
{- |
Module : Data.Grib.Raw.IteratorSpec
Copyright : (c) Mattias Jakobsson 2015
License : GPL-3
Maintainer : mjakob422@gmail.com
Stability : unstable
Portability : portable
Unit and regression tests for Data.Grib.Raw.Iterator.
-}
module Data.Grib.Raw.IteratorSpec (main, spec) where
import Test.Hspec
import Data.Grib.Raw
import Data.Grib.Raw.Test
main :: IO ()
main = hspec spec
spec :: Spec
spec =
describe "GribIterator" $ do
it "should have next after creation" $
withRegular1 $ \h -> withGribIterator h 0 $ \iter ->
gribIteratorHasNext iter `shouldReturn` True
it "should not have previous after creation" $
withRegular1 $ \h -> withGribIterator h 0 $ \iter -> do
(status, _, _, _) <- gribIteratorPrevious iter
status `shouldBe` False
it "should return (True, 60, 0, 279) in the 1st step" $
withRegular1 $ \h -> withGribIterator h 0 $ \iter ->
gribIteratorNext iter `shouldReturn` (True, 60, 0, 279)
it "should return (True, 60, 2, 279.961) in the 2nd step" $
withRegular1 $ \h -> withGribIterator h 0 $ \iter -> do
_ <- gribIteratorNext iter
gribIteratorNext iter `shouldReturn` (True, 60, 2, 279.9609375)
it "should return (True, 60, 0, 279) after reset" $
withRegular1 $ \h -> withGribIterator h 0 $ \iter -> do
_ <- gribIteratorNext iter
gribIteratorReset iter
gribIteratorNext iter `shouldReturn` (True, 60, 0, 279)