hdr-histogram-0.1.0.0: test/Data/HdrHistogram/MutableSpec.hs
{-# LANGUAGE ScopedTypeVariables #-}
module Data.HdrHistogram.MutableSpec where
import Control.Monad.ST (runST)
import Data.HdrHistogram
import qualified Data.HdrHistogram.Mutable as MH
import qualified Data.Vector as U
import Test.Expectations
import Test.Hspec
import Test.Hspec.QuickCheck (prop)
import Test.Utils
spec :: Spec
spec =
describe "Histogram" $
prop "should be close to reference implementation" $ \((ConfigAndVals c vals) :: ConfigAndVals c Int) -> do
let
v = U.fromList vals
median' = median v
h :: Histogram c Int Int
h = runST $ do
h' <- MH.fromConfig c
U.forM_ v (MH.record h')
MH.unsafeFreeze h'
p = percentile h 50
lower p `shouldBeLessThanOrEqual` median'
upper p `shouldBeGreaterThanOrEqual` median'