{-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -Wno-orphans #-} import Test.Hspec import Data.String (IsString (..)) import Data.Text (Text) import Identifier (Identifier) import Lexer import Parser import Types main :: IO () main = hspec $ do describe "Lexer" do it "lexes" do lexer "This is string" `shouldBe` undefined describe "Parser" do it "Bold" do "__bold__" `shouldParseTo` (DocBold (DocString "bold")) it "Emphasis" do "/emphasis/" `shouldParseTo` (DocEmphasis (DocString "emphasis")) shouldParseTo :: Text -> DocMarkup mod Identifier -> Expectation shouldParseTo input ast = parseText input `shouldBe` ast type Doc id = DocMarkup () id instance IsString (Doc String) where fromString = DocString file :: IO String file = readFile "test/markup.md"