diff options
author | Alexander Krotov <ilabdsf@gmail.com> | 2017-11-21 16:20:35 +0300 |
---|---|---|
committer | Alexander Krotov <ilabdsf@gmail.com> | 2017-11-26 02:01:39 +0300 |
commit | a8ac673285877f12bf65843676c57979a9ee28ce (patch) | |
tree | 71f12bd0236ee60fb9a1a83362c42cd78767ddc4 /test/Tests/Readers | |
parent | 5ba890a973cd1b87bb9f9b51a0be8a70a04cc1fa (diff) | |
download | pandoc-a8ac673285877f12bf65843676c57979a9ee28ce.tar.gz |
Muse reader: Add partial round trip test
Diffstat (limited to 'test/Tests/Readers')
-rw-r--r-- | test/Tests/Readers/Muse.hs | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/test/Tests/Readers/Muse.hs b/test/Tests/Readers/Muse.hs index 1095ada31..ee910a450 100644 --- a/test/Tests/Readers/Muse.hs +++ b/test/Tests/Readers/Muse.hs @@ -5,10 +5,12 @@ import Data.List (intersperse) import Data.Text (Text) import qualified Data.Text as T import Test.Tasty +import Test.Tasty.QuickCheck import Tests.Helpers import Text.Pandoc import Text.Pandoc.Arbitrary () import Text.Pandoc.Builder +import Text.Pandoc.Walk (walk) amuse :: Text -> Pandoc amuse = purely $ readMuse def { readerExtensions = extensionsFromList [Ext_amuse]} @@ -24,6 +26,30 @@ infix 4 =: spcSep :: [Inlines] -> Inlines spcSep = mconcat . intersperse space +-- Tables and code blocks don't round-trip yet + +removeTables :: Block -> Block +removeTables (Table{}) = Para [Str "table was here"] +removeTables x = x + +removeCodeBlocks :: Block -> Block +removeCodeBlocks (CodeBlock{}) = Para [Str "table was here"] +removeCodeBlocks x = x + +-- Demand that any AST produced by Muse reader and written by Muse writer can be read back exactly the same way. +-- Currently we remove code blocks and tables and compare third rewrite to the second. +-- First and second rewrites are not equal yet. +roundTrip :: Block -> Bool +roundTrip b = d'' == d''' + where d = walk (removeCodeBlocks . removeTables) $ Pandoc nullMeta [b] + d' = rewrite d + d'' = rewrite d' + d''' = rewrite d'' + rewrite = amuse . T.pack . (++ "\n") . T.unpack . + (purely $ writeMuse def { writerExtensions = extensionsFromList [Ext_amuse] + , writerWrapText = WrapPreserve + }) + tests :: [TestTree] tests = [ testGroup "Inlines" @@ -165,7 +191,8 @@ tests = ] , testGroup "Blocks" - [ "Block elements end paragraphs" =: + [ testProperty "Round trip" roundTrip + , "Block elements end paragraphs" =: T.unlines [ "First paragraph" , "----" , "Second paragraph" |