Earley-0.13.0.1: tests/ReversedWords.hs
module ReversedWords where
import Control.Applicative
import Test.Tasty
import Test.Tasty.HUnit as HU
import Text.Earley
someWords :: Grammar r (Prod r () Char [String])
someWords = return $ flip (:) <$> (map reverse <$> some (list "word")) <*> list "stop"
tests :: TestTree
tests = testGroup "Reversed words"
[ HU.testCase "Parse" $
let input = "wordwordstop"
l = length input in
allParses (parser someWords) input
@?= (,) [(["stop", "drow", "drow"], l)] Report { position = l
, expected = []
, unconsumed = []
}
, HU.testCase "Generate" $
upTo 16 (generator someWords "stopwrd")
@?=
[ (["stop", "drow"], "wordstop")
, (["stop", "drow", "drow"], "wordwordstop")
, (["stop","drow","drow","drow"],"wordwordwordstop")
]
]