파섹 파서에 대한 테스트를 작성하고 싶습니다.하스켈 - 빠른 검사 덕분에 파섹 테스트
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
에 대해 알고 있지만, 이것에 대해서는별로 도움이되지 않습니다.
이 간단한 파서에 대해 잘 설명 된 발전기 예제를 제공하면 감사하겠습니다.
올바른 테스트 케이스의 경우'id = parse. 꽤 괜찮은거야? (또한,'oneOf "_"= "char '_'') – huon
나는 그것이 충분할 것이라고 생각한다. (또한 첫 번째 버전은 훨씬 더 이상했습니다.) – m0nhawk
@dbaupp : 이것에 대해서는 생각해 보았습니다. 파서에'공백 '이나 건너 뛸 수있는 다른 문자가있을 때 간단한 예제를 생각해 봅시다. 그러면 생성 된 결과가 달라집니다. 그리고 추가로'parse'가 도움이 될 것입니다. – m0nhawk