packages feed

conferer-1.1.0.0: test/Conferer/FromConfig/NumbersSpec.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}

module Conferer.FromConfig.NumbersSpec (spec) where

import Test.Hspec
import Conferer.FromConfig.Extended

spec :: Spec
spec = do
  context "Numbers fetching" $ do
    describe "fetching an Int from config" $ do
      ensureEmptyConfigThrows @Int
      ensureUsingDefaultReturnsSameValue @Int 7
      ensureSingleConfigParsesTheRightThing @Int "7" 7
      ensureSingleConfigParsesTheRightThing @Int "-7" (-7)
      ensureSingleConfigThrowsParserError  @Int "50A"

    describe "fetching a Float from config" $ do
      ensureEmptyConfigThrows @Float
      ensureUsingDefaultReturnsSameValue @Float 7.5
      ensureSingleConfigParsesTheRightThing @Float "9.5" 9.5
      ensureSingleConfigParsesTheRightThing @Float "-9.5" (-9.5)
      ensureSingleConfigThrowsParserError @Float "9.50J"
      ensureSingleConfigThrowsParserError @Float ".5"
      ensureSingleConfigThrowsParserError @Float "9."