7
我想編寫一套Parsec解析器的測試。這裏有一個解析器的一個簡單的例子,我想快速檢查測試:通過使用QuickCheck生成輸入來測試Parsec解析器
identifier = do
c <- letter
cs <- many (alphaNum <|> oneOf identSymbols)
skipSpaces
return $ Ident $ c:cs
所以,理想情況下,我想快速檢查,以產生有效的標識符,並確保我得到正確的結果反饋,以及產生無效的標識符並確保他們返回ParseError
。是否有任何公用事業可以使這種事情更容易?有沒有一種方法可以「反向運行我的解析器」,可以這麼說,生成這樣的輸入?
一般來說,這個解析器的QuickCheck測試的好套件是什麼樣的?在某種程度上,我似乎基本上必須在QuickCheck中複製解析器的邏輯以實現徹底的測試。這真的是一個好主意,或者這可能是一種更傳統的工具,比如HUnit比QuickCheck更合適?
我喜歡使用的特定屬性是parse = parse。漂亮 。解析。這是一個體面的方式來模擬解析器對信息的商定,從理論的角度來看,它有一個很好的推動力,它捕捉到一個很好的事實。解析是冪等的,如果不是身份函數。 (通常解析丟棄一些信息) –
最後兩個鏈接都死了 –