packages feed

complexity-0.1: Test/Complexity/Pretty.hs

{-# LANGUAGE RecordWildCards #-}

module Test.Complexity.Pretty ( prettyStats
                              , printStats
                              ) where

import Text.PrettyPrint
import Text.Printf (printf)

import Test.Complexity.Base ( MeasurementStats(..)
                            , Sample
                            , Stats(..)
                            )

prettyStats :: MeasurementStats -> Doc
prettyStats (MeasurementStats {..}) =   text "desc:" <+> text msDesc
                                    $+$ text ""
                                    $+$ vcat (map ppSample msSamples)
    where ppSample :: Sample -> Doc
          ppSample (x, y) = (text . printf "%3i") x <+> char '|' <+> ppStats y
          ppStats (Stats {..}) = int (length statsSamples)
                                 <+> hsep (map (text . printf "%7.3f")
                                               [statsMin, statsMean2, statsMax, statsStdDev]
                                          )

printStats :: [MeasurementStats] -> IO ()
printStats = mapM_ (\s -> do putStrLn . render . prettyStats $ s
                             putStrLn ""
                   )