packages feed

penntreebank-megaparsec-0.1.0: test/unit/Data/Tree/Parser/Penn/Megaparsec/CharSpec.hs

{-# LANGUAGE OverloadedStrings #-}

module Data.Tree.Parser.Penn.Megaparsec.CharSpec (
    spec
) where

import Test.Hspec
-- import Test.QuickCheck
-- import Control.Exception (evaluate)
import Control.Monad.Identity

import Data.Void (Void)
import Data.Text (Text)
import Data.Tree 
import Text.Megaparsec

import Data.Tree.Parser.Penn.Megaparsec.Char as TC

parser :: (Monad m) => TC.PennTreeParserT Text m Text
parser = TC.pTree

spec :: Spec
spec = do
    describe "pTree" $ do
        it "parses" $ do 
            parseTest parser ""
            parseTest parser "()"
            parseTest parser "( )"
            parseTest parser "A"
            parseTest parser "A B V"
            parseTest parser "A (B V)"
            parseTest parser "(A (B V))"
            parseTest parser "(A (B C (D E)))"
        it "fails against broken trees" $ do
            parseTest parser "(A (B C (D E)"