Parsecパーサーのテストを作成したいと思います。パーサーとデータ構造の例を次に示します。
data Event = Event { keyEvent :: String }
deriving Show
parseKey :: Parser Event
parseKey = do
char '<'
k <- many1 (letter <|> digit <|> oneOf "_")
char '>'
return $ Event k
物件を確認する必要があることは承知していparse = parse . pretty . parse
ます。しかし、どのようにして正しいテストケースと間違ったテストケースを生成する必要がありますか?一般に、特定のBNFのテストケースをどのように生成する必要がありますか?私は知っていますが、これからinstance Arbitrary
はあまり助けにはなりません。
この単純なパーサーのジェネレーターのよくコメントされた例を提供していただければ幸いです。