summaryrefslogtreecommitdiff
path: root/pandoc-lua-engine/test
diff options
context:
space:
mode:
Diffstat (limited to 'pandoc-lua-engine/test')
-rw-r--r--pandoc-lua-engine/test/Tests/Lua/Reader.hs34
-rw-r--r--pandoc-lua-engine/test/bytestring-reader.lua7
-rw-r--r--pandoc-lua-engine/test/test-pandoc-lua-engine.hs2
3 files changed, 43 insertions, 0 deletions
diff --git a/pandoc-lua-engine/test/Tests/Lua/Reader.hs b/pandoc-lua-engine/test/Tests/Lua/Reader.hs
new file mode 100644
index 000000000..16474bd91
--- /dev/null
+++ b/pandoc-lua-engine/test/Tests/Lua/Reader.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE LambdaCase #-}
+{- |
+Module : Tests.Lua.Reader
+Copyright : © 2022 Albert Krewinkel
+License : GPL-2.0-or-later
+Maintainer : Albert Krewinkel <pandoc@tarleb.com>
+
+Tests for custom Lua readers.
+-}
+module Tests.Lua.Reader (tests) where
+
+import Data.Char (chr)
+import Data.Default (Default (def))
+import Text.Pandoc.Class (runIOorExplode)
+import Text.Pandoc.Lua (readCustom)
+import Text.Pandoc.Readers (Reader (ByteStringReader, TextReader))
+import Test.Tasty (TestTree)
+import Test.Tasty.HUnit ((@?=), testCase)
+
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.Text as T
+import qualified Text.Pandoc.Builder as B
+
+tests :: [TestTree]
+tests =
+ [ testCase "read binary to code block" $ do
+ input <- BL.readFile "bytestring.bin"
+ doc <- runIOorExplode $
+ readCustom "bytestring-reader.lua" >>= \case
+ ByteStringReader f -> f def input
+ TextReader {} -> error "Expected a bytestring reader"
+ let bytes = mconcat $ map (B.str . T.singleton . chr) [0..255]
+ doc @?= B.doc (B.plain bytes)
+ ]
diff --git a/pandoc-lua-engine/test/bytestring-reader.lua b/pandoc-lua-engine/test/bytestring-reader.lua
new file mode 100644
index 000000000..7908479ec
--- /dev/null
+++ b/pandoc-lua-engine/test/bytestring-reader.lua
@@ -0,0 +1,7 @@
+function ByteStringReader (input, opts)
+ local chars = pandoc.List{}
+ for i = 1, #input do
+ chars:insert(utf8.char(input:byte(i,i)))
+ end
+ return pandoc.Pandoc(pandoc.Plain(pandoc.Str(table.concat(chars))))
+end
diff --git a/pandoc-lua-engine/test/test-pandoc-lua-engine.hs b/pandoc-lua-engine/test/test-pandoc-lua-engine.hs
index 035d92812..21febddb5 100644
--- a/pandoc-lua-engine/test/test-pandoc-lua-engine.hs
+++ b/pandoc-lua-engine/test/test-pandoc-lua-engine.hs
@@ -2,6 +2,7 @@ module Main (main) where
import Test.Tasty (TestTree, defaultMain, testGroup)
import qualified Tests.Lua
import qualified Tests.Lua.Module
+import qualified Tests.Lua.Reader
import qualified Tests.Lua.Writer
import System.Directory (withCurrentDirectory)
@@ -13,4 +14,5 @@ tests = testGroup "pandoc Lua engine"
[ testGroup "Lua filters" Tests.Lua.tests
, testGroup "Lua modules" Tests.Lua.Module.tests
, testGroup "Custom writers" Tests.Lua.Writer.tests
+ , testGroup "Custom readers" Tests.Lua.Reader.tests
]