packages feed

cjk-0.1.0.0: tests/Tests.hs

module Main where

import Control.Monad
import Data.Maybe
import System.Exit

import qualified CJK.Data.Unihan.DictionaryLikeData  as DictionaryLikeData
import qualified CJK.Data.Unihan.NumericValues       as NumericValues
import qualified CJK.Data.Unihan.RadicalStrokeCounts as RadicalStrokeCounts
import qualified CJK.Data.Unihan.Readings            as Readings
import qualified CJK.Data.Unihan.Variants            as Variants
import qualified CJK.Data.CEDICT as CEDICT


-- Just check a single data point from each module. As long as the data parses
-- successfully there is a 90% chance everything is working
main :: IO ()
main = do
    checkNot "DictionaryLikeData"  $ isNothing $ DictionaryLikeData.cangjie '好'
    checkNot "NumericValues"       $ isNothing $ NumericValues.numericValue '十'
    checkNot "RadicalStrokeCounts" $ length (RadicalStrokeCounts.unicode '好') == 0
    checkNot "Readings"            $ length (Readings.mandarinBestEffort '好') == 0
    checkNot "Variants"            $ length (Variants.traditionalVariants '电') == 0
    checkNot "CEDICT"              $ length CEDICT.entries == 0

checkNot :: String -> Bool -> IO ()
checkNot msg p = do
    putStr (msg ++ ": ")
    if p then putStrLn "failure" >> exitWith (ExitFailure 1)
         else putStrLn "success"