packages feed

xformat-0.1.2.1: test/Show.hs

{-# OPTIONS -fno-warn-type-defaults #-}

--------------------------------------------------------------------------------
-- |
-- Module      :  Show
-- Copyright   :  (c) 2009 Sean Leather
-- License     :  BSD3
--
-- Maintainer  :  leather@cs.uu.nl
--
-- Tests for Text.XFormat.Show.
--------------------------------------------------------------------------------

module Show (test) where

--------------------------------------------------------------------------------

import Text.XFormat.Show

--------------------------------------------------------------------------------

test :: Bool
test = and
  [ testBasic
  , testClasses
  , testOther
  , testRecursive
  , testTuples
  ]

testBasic :: Bool
testBasic = and
  [ showsf "abc" "" == "abc"
  , showsf 'c' "" == "c"
  , showf Char 'a' == "a"
  , showf String "abc" == "abc"
  , showf Int 5 == "5"
  , showf Integer 999999999999999999 == "999999999999999999"
  , showf Float 9.2 == "9.2"
  , showf Double 5.5 == "5.5"
  ]

testClasses :: Bool
testClasses = and
  [ showf Show "99.9" == "\"99.9\""
  , showf Num 7734 == "7734"
  ]

testOther :: Bool
testOther = and
  [ let n = 15 in showf (Spaces n) == replicate n ' '
  ]

testRecursive :: Bool
testRecursive = and
  [ showf (Show % Int % String) 4.05 20 " blah" == "4.0520 blah"
  , showf (Wrap '(' Int ')') 24 == "(24)"
  , showf (Align L 5 String) "abc" == "abc  "
  , showf (Align R 5 Int) 999 == "  999"
  , showf (Align L 5 "1234567") == "1234567"
  , showf (AlignChop L 5 "123") == "123  "
  , showf (AlignChop L 3 "12345") == "123"
  , showf (AlignChop R 3 "12345") == "345"
  ]

testTuples :: Bool
testTuples = and
  [ showf (Char, Char) 'a' 'b' == "ab"
  , showf (Char, Char, Char) 'a' 'b' 'c' == "abc"
  , showf (Char, Char, Char, Char) 'a' 'b' 'c' 'd' == "abcd"
  , showf (Char, Char, Char, Char, Char) 'a' 'b' 'c' 'd' 'e' == "abcde"
  , showf (Char, Char, Char, Char, Char, Char) 'a' 'b' 'c' 'd' 'e' 'f' == "abcdef"
  , showf (Char, Char, Char, Char, Char, Char, Char) 'a' 'b' 'c' 'd' 'e' 'f' 'g' == "abcdefg"
  , showf (Char, Char, Char, Char, Char, Char, Char, Char) 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' == "abcdefgh"
  , showf (Char, Char, Char, Char, Char, Char, Char, Char, Char) 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' == "abcdefghi"
  , showf (Char, Char, Char, Char, Char, Char, Char, Char, Char, Char) 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' == "abcdefghij"
  , showf (Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char) 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' == "abcdefghijk"
  , showf (Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char) 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' == "abcdefghijkl"
  , showf (Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char) 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' == "abcdefghijklm"
  , showf (Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char) 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' == "abcdefghijklmn"
  , showf (Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char) 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' == "abcdefghijklmno"
{-
  -- More than 15 is not yet supported.
  , showf (Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char, Char) 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' == "abcdefghijklmnop"
-}
  ]