packages feed

inflections-0.2.0.1: test/Text/Inflections/OrdinalTest.hs

module Text.Inflections.OrdinalTest where

import Test.HUnit hiding (Test)

import Test.Framework.Providers.QuickCheck2 (testProperty)
import Test.Framework.Providers.HUnit (testCase)

import Test.Framework (Test, testGroup)

import Text.Inflections (ordinal, ordinalize)

{-# ANN module "HLint: ignore Use camelCase" #-}

tests :: [Test]
tests = [ testGroup "ordinal"
          [ testCase "1 -> st" test_ordinal1
          , testCase "2 -> nd" test_ordinal2
          , testCase "1002 -> nd" test_ordinal1002
          , testCase "1003 -> rd" test_ordinal1003
          , testCase "-11 -> th" test_ordinalNegative11
          , testCase "-1021 -> st" test_ordinalNegative1021
          , testProperty "notEmpty" prop_ordinalReturnsNotEmpty
          ]
        , testGroup "ordinalize"
          [ testCase "1 -> st" test_ordinalize1
          , testCase "-1021 -> st" test_ordinalizeNegative1021
          , testProperty "result contains number" prop_ordinalizeSamePrefix
          ]
        ]

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

test_ordinal1 :: Assertion
test_ordinal1 = "st" @?= ordinal 1

test_ordinal2 :: Assertion
test_ordinal2 = "nd" @?= ordinal 2

test_ordinal1002 :: Assertion
test_ordinal1002 = "nd" @?= ordinal 1002

test_ordinal1003 :: Assertion
test_ordinal1003 = "rd" @?= ordinal 1003

test_ordinalNegative11 :: Assertion
test_ordinalNegative11 = "th" @?= ordinal (-11)

test_ordinalNegative1021 :: Assertion
test_ordinalNegative1021 = "st" @?= ordinal (-1021)

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

test_ordinalize1 :: Assertion
test_ordinalize1 = "1st" @?= ordinalize 1

test_ordinalizeNegative1021 :: Assertion
test_ordinalizeNegative1021 = "-1021st" @?= ordinalize (-1021)

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

prop_ordinalReturnsNotEmpty :: Integer -> Bool
prop_ordinalReturnsNotEmpty = not . null . ordinal

prop_ordinalizeSamePrefix :: Integer -> Bool
prop_ordinalizeSamePrefix n = show n == take (length $ show n) (ordinalize n)