packages feed

hsini-0.1: tst/ReaderI.hs

{-# OPTIONS_GHC -XTemplateHaskell #-}
-- Copyright : 2011 Magnus Therning
-- License   : BSD3
module ReaderI where

import Test.Framework
import Test.Framework.Providers.HUnit
import Test.Framework.TH
import Test.HUnit.Base
import Text.ParserCombinators.Parsec as P

import Data.Ini.Reader.Internals

-- Convenience function that translates a parser result to something that's
-- easier to check.
p2E p s t = let
        res = P.parse p s t
    in case res of
        Left _ -> Left "bad"
        Right e -> Right e

-- {{{1 secParser
case_secParserBasic = let
        expected = Right $ SectionL "foo"
        actual = p2E secParser "sec" "[foo]\n"
    in expected @=? actual

case_secParserDropSpace = let
        expected = Right $ SectionL "foo"
        actual = p2E secParser "sec" "[ \tfoo\t ]\n"
    in expected @=? actual

case_secParserDropTrailing = let
        expected = Right $ SectionL "foo"
        actual = p2E secParser "sec" "[foo]  \t foobar\n"
    in expected @=? actual

-- {{{1 optLineParser
case_optLineParserBasic = let
        expected = Right $ OptionL "foo" "bar"
        actual = p2E optLineParser "optLine" "foo=bar\n"
    in expected @=? actual

case_optLineParserDropSpace = let
        expected = Right $ OptionL "foo" "bar"
        actual = p2E optLineParser "optLine" "foo\t \t=\t \t bar\n"
    in expected @=? actual

case_optLineParserKeepSpace = let
        expected = Right $ OptionL "foo" "bar \t \t"
        actual = p2E optLineParser "optLine" "foo\t \t=\t \t bar \t \t\n"
    in expected @=? actual

-- {{{1 optContParser
case_optContParserSpace = let
        expected = Right $ OptionContL "foo"
        actual = p2E optContParser "optCont" " foo\n"
    in expected @=? actual

case_optContParserTab = let
        expected = Right $OptionContL "foo"
        actual = p2E optContParser "optCont" "\tfoo\n"
    in expected @=? actual

case_optContParserKeepTrailing = let
        expected = Right $ OptionContL "foo  \t\t"
        actual = p2E optContParser "optCont" "\tfoo  \t\t\n"
    in expected @=? actual

-- {{{1 noiseParser
case_noiseParserEmptyLine = let
        expected = Right CommentL
        actual = p2E noiseParser "noise" "\n"
    in expected @=? actual

case_noiseParserComment = let
        expected = Right CommentL
        actual = p2E noiseParser "noise" "# a comment\n"
    in expected @=? actual

case_noiseParserNonEmpty = let
        expected = Left "bad"
        actual = p2E noiseParser "noise" " \n"
    in expected @=? actual

-- {{{1 iniParser
-- TBD

-- {{{1 buildConfig
-- TBD

allTests = $(testGroupGenerator)