From b95e864ecfc0a0ef96fa09d4118c8e6b4033784c Mon Sep 17 00:00:00 2001
From: Albert Krewinkel <albert@zeitkraut.de>
Date: Tue, 26 Oct 2021 21:39:24 +0200
Subject: Lua: marshal SimpleTable values as userdata objects

---
 test/lua/module/pandoc.lua | 61 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

(limited to 'test/lua/module')

diff --git a/test/lua/module/pandoc.lua b/test/lua/module/pandoc.lua
index 173c9bb29..9b6e360f3 100644
--- a/test/lua/module/pandoc.lua
+++ b/test/lua/module/pandoc.lua
@@ -261,6 +261,67 @@ return {
       end)
     }
   },
+  group 'Other types' {
+    group 'SimpleTable' {
+      test('can access properties', function ()
+        local spc = pandoc.Space()
+        local caption = {pandoc.Str 'Languages', spc, pandoc.Str 'overview.'}
+        local aligns = {pandoc.AlignDefault, pandoc.AlignDefault}
+        local widths = {0, 0} -- let pandoc determine col widths
+        local headers = {{pandoc.Plain({pandoc.Str "Language"})},
+          {pandoc.Plain({pandoc.Str "Typing"})}}
+        local rows = {
+          {{pandoc.Plain "Haskell"}, {pandoc.Plain "static"}},
+          {{pandoc.Plain "Lua"}, {pandoc.Plain "Dynamic"}},
+        }
+        local simple_table = pandoc.SimpleTable(
+          caption,
+          aligns,
+          widths,
+          headers,
+          rows
+        )
+        assert.are_same(simple_table.caption, caption)
+        assert.are_same(simple_table.aligns, aligns)
+        assert.are_same(simple_table.widths, widths)
+        assert.are_same(simple_table.headers, headers)
+        assert.are_same(simple_table.rows, rows)
+      end),
+      test('can modify properties', function ()
+        local new_table = pandoc.SimpleTable(
+          {'Languages'},
+          {pandoc.AlignDefault, pandoc.AlignDefault},
+          {0.5, 0.5},
+          {{pandoc.Plain({pandoc.Str "Language"})},
+           {pandoc.Plain({pandoc.Str "Typing"})}},
+          {
+            {{pandoc.Plain "Haskell"}, {pandoc.Plain "static"}},
+            {{pandoc.Plain "Lua"}, {pandoc.Plain "Dynamic"}},
+          }
+        )
+
+        new_table.caption = {pandoc.Str 'Good', pandoc.Space(),
+                             pandoc.Str 'languages'}
+        new_table.aligns[1] = pandoc.AlignLeft
+        new_table.widths = {0, 0}
+        new_table.headers[2] = {pandoc.Plain{pandoc.Str 'compiled/interpreted'}}
+        new_table.rows[1][2] = {pandoc.Plain{pandoc.Str 'both'}}
+        new_table.rows[2][2] = {pandoc.Plain{pandoc.Str 'interpreted'}}
+
+        local expected_table = pandoc.SimpleTable(
+          {pandoc.Str 'Good', pandoc.Space(), pandoc.Str 'languages'},
+          {pandoc.AlignLeft, pandoc.AlignDefault},
+          {0, 0},
+          {{pandoc.Plain 'Language'}, {pandoc.Plain 'compiled/interpreted'}},
+          {
+            {{pandoc.Plain 'Haskell'}, {pandoc.Plain 'both'}},
+            {{pandoc.Plain 'Lua'}, {pandoc.Plain 'interpreted'}}
+          }
+        )
+        assert.are_same(expected_table, new_table)
+      end)
+    }
+  },
 
   group 'clone' {
     test('clones Attr', function ()
-- 
cgit v1.2.3