mediabus-0.2.0.0: specs/Data/MediaBus/TicksSpec.hs
module Data.MediaBus.TicksSpec ( spec ) where
import Data.MediaBus
import Test.QuickCheck
import Test.Hspec
import Control.Lens
import Data.Word
spec :: Spec
spec = do
describe "nominalDiffTime At8kHzU32" $
it "is isomorphic" $
property $
\tix -> (view (from nominalDiffTime)
(view nominalDiffTime (mkTicks at8kHzU32 tix)))
`shouldBe`
mkTicks at8kHzU32 tix
describe "nominalDiffTime At48kHzU64" $
it "is isomorphic" $
property $
\tix -> (view (from nominalDiffTime)
(view nominalDiffTime (mkTicks at48kHzU64 tix)))
`shouldBe`
mkTicks at48kHzU64 tix
describe "convertTicks between At16kHzU32 and At16kHzU32" $
it "is idempotent" $
property $
\tix -> let t = mkTicks at16kHzU32 tix
in
convertTicks t `shouldBe` t
describe "convertTicks between At8kHzU32 and At16kHzU64" $
it "preserves nominalDiffTime when converting back and forth" $
property $
\tix -> let t = mkTicks at8kHzU32 tix
in
view nominalDiffTime
(convertTicks t :: Ticks 16000 Word64) `shouldBe`
view nominalDiffTime t