{-# LANGUAGE CPP #-} -- | module Test.Sandwich.Formatters.Common.Util ( formatNominalDiffTime ) where import Data.Fixed import Data.Time.Clock import Text.Printf formatNominalDiffTime :: NominalDiffTime -> String formatNominalDiffTime diff | diff < ps = (roundFixed ((nominalDiffTimeToSeconds diff) * 10^15)) <> " ps" formatNominalDiffTime diff | diff < ns = (roundFixed ((nominalDiffTimeToSeconds diff) * 10^12)) <> " ns" formatNominalDiffTime diff | diff < us = (roundFixed ((nominalDiffTimeToSeconds diff) * 10^9)) <> " ns" formatNominalDiffTime diff | diff < ms = (roundFixed ((nominalDiffTimeToSeconds diff) * 10^6)) <> " us" formatNominalDiffTime diff | diff < second = (roundFixed ((nominalDiffTimeToSeconds diff) * 10^3)) <> " ms" formatNominalDiffTime diff = (roundFixed (nominalDiffTimeToSeconds diff)) <> " s" second = secondsToNominalDiffTime 1 ms = secondsToNominalDiffTime 0.001 us = secondsToNominalDiffTime 0.000001 ns = secondsToNominalDiffTime 0.000000001 ps = secondsToNominalDiffTime 0.000000000001 roundFixed :: Fixed E12 -> String roundFixed f = printf "%.1f" ((realToFrac f) :: Double) #if !MIN_VERSION_time(1,9,1) secondsToNominalDiffTime :: Pico -> NominalDiffTime secondsToNominalDiffTime = realToFrac nominalDiffTimeToSeconds :: NominalDiffTime -> Pico nominalDiffTimeToSeconds = realToFrac #endif