From b0ed22f436ee766fad4503ff999a8aca41296d0c Mon Sep 17 00:00:00 2001 From: "Yann Esposito (Yogsototh)" Date: Fri, 26 Jul 2013 17:53:37 +0200 Subject: [PATCH] better testing with compilation --- .gitignore | 5 +++++ test.sh | 14 +++++++++++++- tests/bool | 4 ++++ y.hs | 8 ++++---- 4 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 tests/bool diff --git a/.gitignore b/.gitignore index 477a353..9467161 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,8 @@ +# tests & compilation +y +.tmp + +# haskell dist cabal-dev *.o diff --git a/test.sh b/test.sh index af56488..4b663e4 100755 --- a/test.sh +++ b/test.sh @@ -10,6 +10,18 @@ else fi tmpfic=tests/tmp + + +if ((${#listfic}>1)); then + # compile + [[ ! -d .tmp ]] && mkdir .tmp + ghc -O2 -hidir .tmp -odir .tmp y.hs + cmd='./y' +else + cmd=(runghc y.hs) +fi + +# test for input in $listfic; do sed 's/\\/\\\\/g' $input > $tmpfic # set 3 as the file descriptor for the file $tmpfic @@ -21,7 +33,7 @@ for input in $listfic; do (($?!=0)) && {done=1;continue} read <&3 expected (($?!=0)) && {done=1;continue} - result="$(runghc y.hs "$program")" + result="$($cmd "$program")" printf "%18s (line %3d): " ${input:t} $num if [[ $expected == $result ]]; then print -- "OK" diff --git a/tests/bool b/tests/bool new file mode 100644 index 0000000..8733436 --- /dev/null +++ b/tests/bool @@ -0,0 +1,4 @@ +#t +#t +#f +#f diff --git a/y.hs b/y.hs index 17c0552..2727031 100644 --- a/y.hs +++ b/y.hs @@ -48,8 +48,8 @@ parseExpr :: Parser LispVal parseExpr = parseString <|> try parseChar -- #\a #\b etc... <|> try parseFloat -- 3.1415 - <|> parseNumber -- 3, #b011001, #o070, #d930, #xFF3 - <|> parseAtom -- symbol-323 + <|> try parseNumber -- 3, #b011001, #o070, #d930, #xFF3 + <|> try parseAtom -- symbol-323 <|> parseQuoted <|> do char '(' @@ -90,8 +90,8 @@ parseAtom = do rest <- many (letter <|> digit <|> symbol) let atom = first:rest return $ case atom of - "#vrai" -> Bool True - "#faux" -> Bool False + "#t" -> Bool True + "#f" -> Bool False _ -> Atom atom numFromBase n str = foldl' traiteNombre 0 str