aboutsummaryrefslogtreecommitdiff
path: root/test/functional/plugin/man_spec.lua
diff options
context:
space:
mode:
authorGabriel Holodak <gthepiper@gmail.com>2017-12-01 01:06:35 -0500
committerGabriel Holodak <gthepiper@gmail.com>2017-12-27 23:27:14 -0500
commit134c0f0bdb50b16d443b103fc1a81c9ae5c7c017 (patch)
tree8a00c986fde68857cf3e4a11113d940ddba84207 /test/functional/plugin/man_spec.lua
parent6740c94562cc1b271a6ea2458ebb847a6e3665e2 (diff)
downloadrneovim-134c0f0bdb50b16d443b103fc1a81c9ae5c7c017.tar.gz
rneovim-134c0f0bdb50b16d443b103fc1a81c9ae5c7c017.tar.bz2
rneovim-134c0f0bdb50b16d443b103fc1a81c9ae5c7c017.zip
Add functional tests for man highlighting
Diffstat (limited to 'test/functional/plugin/man_spec.lua')
-rw-r--r--test/functional/plugin/man_spec.lua181
1 files changed, 181 insertions, 0 deletions
diff --git a/test/functional/plugin/man_spec.lua b/test/functional/plugin/man_spec.lua
new file mode 100644
index 0000000000..53384a9d47
--- /dev/null
+++ b/test/functional/plugin/man_spec.lua
@@ -0,0 +1,181 @@
+local helpers = require('test.functional.helpers')(after_each)
+local plugin_helpers = require('test.functional.plugin.helpers')
+
+local Screen = require('test.functional.ui.screen')
+
+local buffer, command, eval = helpers.buffer, helpers.command, helpers.eval
+
+before_each(function()
+ plugin_helpers.reset()
+ helpers.clear()
+ command('syntax on')
+ command('set filetype=man')
+end)
+
+describe('In autoload/man.vim', function()
+ describe('function man#highlight_formatted_text', function()
+ local screen
+
+ before_each(function()
+ command('syntax off') -- Ignore syntax groups
+ screen = Screen.new(52, 5)
+ screen:attach()
+ end)
+
+ after_each(function()
+ screen:detach()
+ end)
+
+ local function expect(string)
+ screen:expect(string,
+ {
+ b = { bold = true },
+ i = { italic = true },
+ u = { underline = true },
+ bi = { bold = true, italic = true },
+ biu = { bold = true, italic = true, underline = true },
+ },
+ {{ bold = true, foreground = Screen.colors.Blue }})
+ end
+
+ local function expect_without_highlights(string)
+ screen:expect(string, nil, true)
+ end
+
+ local function insert_lines(...)
+ buffer('set_lines', 0, 0, 1, false, { ... })
+ end
+
+ it('clears backspaces from text', function()
+ insert_lines(
+ "this i\bis\bs a\ba test",
+ "with _\bo_\bv_\be_\br_\bs_\bt_\br_\bu_\bc_\bk text"
+ )
+
+ expect_without_highlights([[
+ ^this i^His^Hs a^Ha test |
+ with _^Ho_^Hv_^He_^Hr_^Hs_^Ht_^Hr_^Hu_^Hc_^Hk text |
+ ~ |
+ ~ |
+ |
+ ]])
+
+ eval('man#highlight_formatted_text()')
+
+ expect_without_highlights([[
+ ^this is a test |
+ with overstruck text |
+ ~ |
+ ~ |
+ |
+ ]])
+ end)
+
+ it('clears escape sequences from text', function()
+ insert_lines(
+ "this \027[1mis \027[3ma \027[4mtest\027[0m",
+ "\027[4mwith\027[24m \027[4mescaped\027[24m \027[4mtext\027[24m"
+ )
+
+ expect_without_highlights([[
+ ^this ^[[1mis ^[[3ma ^[[4mtest^[[0m |
+ ^[[4mwith^[[24m ^[[4mescaped^[[24m ^[[4mtext^[[24m |
+ ~ |
+ ~ |
+ |
+ ]])
+
+ eval('man#highlight_formatted_text()')
+
+ expect_without_highlights([[
+ ^this is a test |
+ with escaped text |
+ ~ |
+ ~ |
+ |
+ ]])
+ end)
+
+ it('highlights overstruck text', function()
+ insert_lines(
+ "this i\bis\bs a\ba test",
+ "with _\bo_\bv_\be_\br_\bs_\bt_\br_\bu_\bc_\bk text"
+ )
+ eval('man#highlight_formatted_text()')
+
+ expect([[
+ ^this {b:is} {b:a} test |
+ with {u:overstruck} text |
+ ~ |
+ ~ |
+ |
+ ]])
+ end)
+
+ it('highlights escape sequences in text', function()
+ insert_lines(
+ "this \027[1mis \027[3ma \027[4mtest\027[0m",
+ "\027[4mwith\027[24m \027[4mescaped\027[24m \027[4mtext\027[24m"
+ )
+ eval('man#highlight_formatted_text()')
+
+ expect([[
+ ^this {b:is }{bi:a }{biu:test} |
+ {u:with} {u:escaped} {u:text} |
+ ~ |
+ ~ |
+ |
+ ]])
+ end)
+
+ it('highlights multibyte text', function()
+ insert_lines(
+ "this i\bis\bs あ\bあ test",
+ "with _\bö_\bv_\be_\br_\bs_\bt_\br_\bu_\bc_\bk te\027[3mxt¶\027[0m"
+ )
+ eval('man#highlight_formatted_text()')
+
+ expect([[
+ ^this {b:is} {b:あ} test |
+ with {u:överstruck} te{i:xt¶} |
+ ~ |
+ ~ |
+ |
+ ]])
+ end)
+
+ it('highlights underscores based on context', function()
+ insert_lines(
+ "_\b_b\bbe\beg\bgi\bin\bns\bs",
+ "m\bmi\bid\bd_\b_d\bdl\ble\be",
+ "_\bm_\bi_\bd_\b__\bd_\bl_\be"
+ )
+ eval('man#highlight_formatted_text()')
+
+ expect([[
+ {b:^_begins} |
+ {b:mid_dle} |
+ {u:mid_dle} |
+ ~ |
+ |
+ ]])
+ end)
+
+ it('highlights various bullet formats', function()
+ insert_lines(
+ "· ·\b·",
+ "+\bo",
+ "+\b+\bo\bo double"
+ )
+ eval('man#highlight_formatted_text()')
+
+ expect([[
+ ^· {b:·} |
+ {b:·} |
+ {b:·} double |
+ ~ |
+ |
+ ]])
+ end)
+ end)
+end)