implemented showFloating

This commit is contained in:
Jonathan Lamothe 2019-11-28 06:20:14 -05:00
parent be54198960
commit dcbb809ae1
2 changed files with 16 additions and 2 deletions

View File

@ -188,5 +188,9 @@ overlayLast str [l] = [overlay str l]
overlayLast str (l:ls) = l : overlayLast str ls
-- | Converts a non-integer into a string
showFloating :: Fractional n => n -> String
showFloating = undefined
showFloating :: RealFrac n => n -> String
showFloating n = let
i = round $ n * 100
whole = i `div` 100
fraction = i `mod` 100
in show whole ++ "." ++ padNum 2 fraction

View File

@ -21,6 +21,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
module FormatSpec (spec) where
import Data.Ratio ((%))
import Test.Hspec (Spec, context, describe, it, shouldBe)
import Mtlstats.Format
@ -39,6 +40,7 @@ spec = describe "Mtlstats.Format" $ do
tableWithSpec
complexTableSpec
overlayLastSpec
showFloatingSpec
padNumSpec :: Spec
padNumSpec = describe "padNum" $ do
@ -226,3 +228,11 @@ overlayLastSpec = describe "overlayLast" $ let
[ ( "empty list", [], [] )
, ( "non-empty list", sample, edited )
]
showFloatingSpec :: Spec
showFloatingSpec = describe "showFloating" $ let
input = 3 % 2 :: Rational
expected = "1.50"
in it ("should be " ++ expected) $
showFloating input `shouldBe` expected