Compare commits

..

No commits in common. "f586b904349d030bd96c09bb34181d5e8fcea08e" and "4410e675903153ffd1a5ef2727041e5e71213b38" have entirely different histories.

2 changed files with 15 additions and 55 deletions

View file

@ -46,7 +46,6 @@ test-suite haddock2-test
type: exitcode-stdio-1.0
main-is: Spec.hs
build-depends:
parsec ^>=3.1.18.0,
base >=4.20.1.0,
haddock2:{haddock2-lib},
hspec ^>=2.11.0,

View file

@ -3,14 +3,24 @@
import Test.Hspec
import Data.String (IsString (..))
import Data.Text (Text)
import Identifier (Identifier)
import Lexer
import Parser
import Types
import Data.String (IsString (..))
import Data.Text (Text)
import Text.Parsec.Pos
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
@ -20,54 +30,5 @@ type Doc id = DocMarkup () id
instance IsString (Doc String) where
fromString = DocString
shouldLexTo :: String -> [(Int, Int, Token)] -> Expectation
shouldLexTo input expected =
case lexer input of
Right tokens -> do
let actual = map (\(pos, tok) -> (sourceLine pos, sourceColumn pos, tok)) tokens
actual `shouldBe` expected
Left err -> expectationFailure $ "Parse error: " <> show err
main :: IO ()
main = hspec $ do
describe "Lexer" do
describe "minimal" do
it "bare string" someString
it "emphasis" emphatic
it "monospace" monospace
it "ignores nesting" ignoreNesting
describe "Parser" do
it "Bold" do
"__bold__" `shouldParseTo` (DocBold (DocString "bold"))
it "Emphasis" do
"/emphasis/" `shouldParseTo` (DocEmphasis (DocString "emphasis"))
monospace :: Expectation
monospace =
"@mono@"
`shouldLexTo` [ (1, 7, MonospaceOpen)
, (1, 7, Token "mono")
, (1, 7, MonospaceClose)
]
ignoreNesting :: Expectation
ignoreNesting =
">/foo/"
`shouldLexTo` [ (1, 1, Token ">/foo/")
]
emphatic :: Expectation
emphatic =
"/emphatic/"
`shouldLexTo` [ (1, 11, EmphasisOpen)
, (1, 11, Token "emphatic")
, (1, 11, EmphasisClose)
]
someString :: Expectation
someString =
"some string"
`shouldLexTo` [ (1, 1, Token "some")
, (1, 5, Space)
, (1, 6, Token "string")
]
file :: IO String
file = readFile "test/markup.md"