aboutsummaryrefslogtreecommitdiff
path: root/test/functional/ui/highlight_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/ui/highlight_spec.lua')
-rw-r--r--test/functional/ui/highlight_spec.lua184
1 files changed, 184 insertions, 0 deletions
diff --git a/test/functional/ui/highlight_spec.lua b/test/functional/ui/highlight_spec.lua
new file mode 100644
index 0000000000..3c55c09f95
--- /dev/null
+++ b/test/functional/ui/highlight_spec.lua
@@ -0,0 +1,184 @@
+local helpers = require('test.functional.helpers')
+local Screen = require('test.functional.ui.screen')
+local clear, feed, nvim = helpers.clear, helpers.feed, helpers.nvim
+local execute = helpers.execute
+
+describe('Default highlight groups', function()
+ -- Test the default attributes for highlight groups shown by the :highlight
+ -- command
+ local screen, hlgroup_colors
+
+ setup(function()
+ hlgroup_colors = {
+ NonText = nvim('name_to_color', 'Blue'),
+ Question = nvim('name_to_color', 'SeaGreen')
+ }
+ end)
+
+ before_each(function()
+ clear()
+ screen = Screen.new()
+ screen:attach()
+ end)
+
+ after_each(function()
+ screen:detach()
+ end)
+
+ it('window status bar', function()
+ screen:set_default_attr_ids({
+ [1] = {reverse = true, bold = true}, -- StatusLine
+ [2] = {reverse = true} -- StatusLineNC
+ })
+ execute('sp', 'vsp', 'vsp')
+ screen:expect([[
+ ^ {2:|} {2:|} |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ {1:[No Name] }{2:[No Name] [No Name] }|
+ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ {2:[No Name] }|
+ |
+ ]])
+ -- navigate to verify that the attributes are properly moved
+ feed('<c-w>j')
+ screen:expect([[
+ {2:|} {2:|} |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ {2:[No Name] [No Name] [No Name] }|
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ {1:[No Name] }|
+ |
+ ]])
+ -- note that when moving to a window with small width nvim will increase
+ -- the width of the new active window at the expense of a inactive window
+ -- (upstream vim has the same behavior)
+ feed('<c-w>k<c-w>l')
+ screen:expect([[
+ {2:|}^ {2:|} |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ {2:[No Name] }{1:[No Name] }{2:[No Name] }|
+ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ {2:[No Name] }|
+ |
+ ]])
+ feed('<c-w>l')
+ screen:expect([[
+ {2:|} {2:|}^ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ {2:[No Name] [No Name] }{1:[No Name] }|
+ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ {2:[No Name] }|
+ |
+ ]])
+ feed('<c-w>h<c-w>h')
+ screen:expect([[
+ ^ {2:|} {2:|} |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ ~ {2:|}~ {2:|}~ |
+ {1:[No Name] }{2:[No Name] [No Name] }|
+ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ {2:[No Name] }|
+ |
+ ]])
+ end)
+
+ it('insert mode text', function()
+ feed('i')
+ screen:expect([[
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ {1:-- INSERT --} |
+ ]], {[1] = {bold = true}})
+ end)
+
+ it('end of file markers', function()
+ nvim('command', 'hi Normal guibg=black')
+ screen:expect([[
+ ^ |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ |
+ ]], {[1] = {bold = true, foreground = hlgroup_colors.NonText}})
+ end)
+
+ it('"wait return" text', function()
+ feed(':ls<cr>')
+ screen:expect([[
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ :ls |
+ 1 %a "[No Name]" line 1 |
+ {1:Press ENTER or type command to continue}^ |
+ ]], {[1] = {bold = true, foreground = hlgroup_colors.Question}})
+ feed('<cr>') -- skip the "Press ENTER..." state or tests will hang
+ end)
+end)