packages feed

ReplaceUmlaut-0.1.5.3: tests/Lib/OneMDfile_test.hs

-----------------------------------------------------------------------------
--
-- Module      :   a test for HTF framework
--              tests the corresponding Lib.NN.hs program
-- insert {-@ HTF_TESTS @-} for each import
-----------------------------------------------------------------------------
{-# OPTIONS_GHC -F -pgmF htfpp #-}

{-# LANGUAGE FlexibleContexts      #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables   #-}
{-# LANGUAGE TypeFamilies          #-}
{-# LANGUAGE TypeSynonymInstances  #-}
{-# LANGUAGE OverloadedStrings     #-}

module Lib.OneMDfile_test  -- (openMain, htf_thisModuelsTests)
     where


import Test.Framework
-- import Uniform.Strings
-- import Uniform.Error 
import Lib.OneMDfile
import Lib.ProcTxt
import Lib.ProcWord
import Lib.FileHandling
-- import Uniform.FileIO
import UniformBase

-- show produces the "xx"
test_a1 = assertEqual ("a") $ unwords' . words' $ ("a"::Text) 
test_1 = assertEqual ("für") $ procLine2 [] ("fuer"::Text)
-- not clear where the \n disappeared 
-- test_2 = assertEqual 6 9
test_2 = assertEqual ("       für") $ procLine2 [] ("       fuer"::Text)
test_3 = assertEqual ("\tfür") $ procLine2 [] ("\tfuer"::Text)
test_4 = assertEqual ("        Einschr\228nkungen gelebt.") $ procLine2 [] ("        Einschraenkungen gelebt."::Text)


exampleText1 = unlines' [
        "abstract: Was hat einer in der Katastrophe erlebt, der weniger unter den Folgen zu"
        , "         leiden hatte, als andere? Wir haben meist ausserhalb von Wien am Land ohne wesentlichen"
        , "     Einschraenkungen gelebt." ] :: Text
resultText1 = unlines' [
        "abstract: Was hat einer in der Katastrophe erlebt, der weniger unter den Folgen zu"
        , "         leiden hatte, als andere? Wir haben meist ausserhalb von Wien am Land ohne wesentlichen"
        , "     Einschränkungen gelebt." ] :: Text

procLines1 :: [Text] -> Text -> Text
procLines1 e t = unlines' . fmap   (procLine2 e) . lines' $ t
test_5 = assertEqual resultText1 $ procLines1 [] exampleText1
-- test_6 = assertEqual "" $ showT  exampleText1
test_7 = assertEqual ("        Einschr\228nkungen gelebt.\n    und\n") $ procLines1 [] ("        Einschraenkungen gelebt.\n    und"::Text)


test_m1 = do
    r <- runErr $ do
        let fn1 = makeRelFile "testData/test4.md"
            fnerl = makeRelFile "nichtUmlaute" :: Path Rel File
        cdir <- currentDir
        let fnabs    = cdir </> fn1 :: Path Abs File
        let fnerlabs = cdir </> fnerl :: Path Abs File
        erl2 <- readErlaubt fnerlabs
        procMd1 True erl2 fnabs
    assertEqual (Right True) r

-- test a simple md file 
-- test_5 = do -- fn1 muss existieren
--                 -- result fn1 renamed, new fn1 written 
--     r <- runErr $ 
--             do  -- necessary to keep the files for tests
--                 cont :: Text <- readFile2 fn1 
--                 fn2 <- changeExtensionBakOrNew True fn1 
--                 writeFile2 fn2 cont
--                 return (toFilePath fn2)
--     assertEqual (Right fn1t) r 
    
    -- test_2 = assertEqual 6 9

-- test_2 = assertEqual t2 $ map procWord1 t1
-- t1 = ["fuer", "Moerder", "Aerger", "koennen", "maesten", "FUER", "Oesterreich"] :: [Text]
-- t2 = ["für", "Mörder", "Ärger", "können", "mästen", "FÜR", "Österreich"] :: [Text]

-- test_e1 = assertEqual [True, True]  $ map checkErlaubt1 e1
-- e1 = ["Koeffizient", "Poetik"]::[Text]

-- test_e2 = assertEqual True $ isInfixOf' ("poes"::Text) "poesie"
-- test_w1 = assertEqual w1r $ map (procWord2 erlaubt1) w1
-- w1 = ["fuer", "Moerder", "Aerger", "koennen", "maesten", "FUER"
--   , "Koeffizienten", "Poetik", "Poet", "Poesie"] :: [Text]
-- w1r = ["f\252r", "M\246rder", "\196rger", "k\246nnen", "m\228sten",
--  "F\220R", "Koeffizienten", "Poetik", "Poet", "Poesie"]::[Text]

-- w2 = unwords' w1 :: Text 
-- w2r = "f\252r M\246rder \196rger k\246nnen m\228sten F\220R Koeffizienten Poetik Poet Poesie"
-- test_idempot = assertEqual w2r (procLine erlaubt1 (procLine erlaubt1 w2))