packages feed

Earley-0.11.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 "Unit Tests"
  [ HU.testCase "Some reversed words" $
      let input = "wordwordstop"
          l     = length input in
      allParses (parser someWords) input
      @?= (,) [(["stop", "drow", "drow"], l)] Report { position   = l
                                                     , expected   = []
                                                     , unconsumed = []
                                                     }
  ]