packages feed

mangopay-1.6.0: test/Web/MangoPay/SimpleTest.hs

{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -F -pgmF htfpp #-}
module Web.MangoPay.SimpleTest where

import Web.MangoPay

import qualified Data.Text as T
import Test.Framework
import Test.HUnit (Assertion)
import Data.Either (rights)

-- | test serialization of card expiration
test_CardExpiration :: Assertion
test_CardExpiration = do
  let ece1=readCardExpiration "0225"
  assertBool $ not $ null $ rights [ece1]
  let Right (ce1,t1)=ece1
  assertBool $ T.null t1
  assertEqual (CardExpiration 2 25) ce1
  assertEqual "0225" $ writeCardExpiration ce1
  let ece2=readCardExpiration "1503"
  assertBool $ not $ null $ rights [ece2]
  let Right (ce2,t2)=ece2
  assertBool $ T.null t2
  assertEqual (CardExpiration 15 3) ce2
  assertEqual "1503" $ writeCardExpiration ce2
  let ce3 = CardExpiration 10 2034
  assertEqual "1034" $ writeCardExpiration ce3

  
-- | test income ranges
test_IncomeRanges :: Assertion
test_IncomeRanges = mapM_ testIncomeRange [minBound .. maxBound]

-- | test one income range
testIncomeRange :: IncomeRange -> Assertion
testIncomeRange ir=do
  let (Amount c1 a1,Amount c2 a2) = incomeBounds ir
  assertEqual "EUR" c1
  assertEqual "EUR" c2
  if a2 > (-1)
    then do 
      let mid = div (a1+a2) 2
      assertEqual ir $ incomeRange (Amount c1 mid)
    else do
      assertEqual IncomeRange6 ir
      let mid = a1 * 2
      assertEqual ir $ incomeRange (Amount c1 mid)