1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-04 06:00:04 +08:00
SpaceVim/bundle/gina.vim/test/vital/Vim/Highlight.vimspec

225 lines
7.3 KiB
Plaintext
Vendored

Describe Vim.Highlight
Before all
let Highlight = vital#gina#import('Vim.Highlight')
highlight VitalVimHighlightCase1 ctermfg=0 guifg=#000000
highlight VitalVimHighlightCase2 cterm=reverse ctermfg=100 gui=reverse guifg=#333333
highlight link VitalVimHighlightCase3 VitalVimHighlightCase1
highlight clear VitalVimHighlightCase4
End
After all
highlight clear VitalVimHighlightCase1
highlight clear VitalVimHighlightCase2
highlight clear VitalVimHighlightCase3
highlight clear VitalVimHighlightCase4
highlight clear VitalVimHighlightCase5
highlight clear VitalVimHighlightCase6
End
Describe .get([{name}])
It throws an exception when {name} highlight is not found
Throws /E411/ Highlight.get('VitalVimHighlightCaseMissing')
End
It returns a highlight instance for the {name} highlight
let highlight = Highlight.get('VitalVimHighlightCase1')
Assert Equals(highlight, {
\ 'name': 'VitalVimHighlightCase1',
\ 'attrs': {
\ 'ctermfg': '0',
\ 'guifg': '#000000'
\ },
\})
End
It returns a highlight instance list of all highlights
let highlight = Highlight.get()
call filter(highlight, 'v:val.name =~# ''^VitalVimHighlight''')
Assert Equals(highlight, [
\ {
\ 'name': 'VitalVimHighlightCase1',
\ 'attrs': {
\ 'ctermfg': '0',
\ 'guifg': '#000000'
\ },
\ },
\ {
\ 'name': 'VitalVimHighlightCase2',
\ 'attrs': {
\ 'cterm': 'reverse',
\ 'ctermfg': '100',
\ 'gui': 'reverse',
\ 'guifg': '#333333'
\ },
\ },
\ {
\ 'name': 'VitalVimHighlightCase3',
\ 'attrs': {
\ 'link': 'VitalVimHighlightCase1',
\ },
\ },
\ {
\ 'name': 'VitalVimHighlightCase4',
\ 'attrs': {
\ 'cleared': 1,
\ },
\ },
\])
End
End
Describe .set({highlight} [, {options}])
It create a new highlight by {highlight}
let highlight = {
\ 'name': 'VitalVimHighlightCase5',
\ 'attrs': {
\ 'cterm': 'reverse',
\ 'ctermfg': '100',
\ 'gui': 'reverse',
\ 'guifg': '#333333',
\ }
\}
Throws /E411/ Highlight.get('VitalVimHighlightCase5')
call Highlight.set(highlight)
Assert Equals(Highlight.get('VitalVimHighlightCase5'), highlight)
End
It overwrite an existing highlight by {highlight}
call Highlight.set({
\ 'name': 'VitalVimHighlightCase5',
\ 'attrs': {
\ 'cterm': 'reverse',
\ 'ctermfg': '100',
\ 'gui': 'reverse',
\ 'guifg': '#333333',
\ }
\})
let highlight = {
\ 'name': 'VitalVimHighlightCase5',
\ 'attrs': {
\ 'cterm': 'NONE',
\ 'gui': 'bold',
\ }
\}
let expect = {
\ 'name': 'VitalVimHighlightCase5',
\ 'attrs': {
\ 'ctermfg': '100',
\ 'gui': 'bold',
\ 'guifg': '#333333',
\ }
\}
Assert NotEquals(Highlight.get('VitalVimHighlightCase5'), expect)
call Highlight.set(highlight)
Assert Equals(Highlight.get('VitalVimHighlightCase5'), expect)
End
It does not overwrite an existing highlight when {options.default} is specified
call Highlight.set({
\ 'name': 'VitalVimHighlightCase5',
\ 'attrs': {
\ 'cterm': 'reverse',
\ 'ctermfg': '100',
\ 'gui': 'reverse',
\ 'guifg': '#333333',
\ }
\})
let highlight = {
\ 'name': 'VitalVimHighlightCase5',
\ 'attrs': {
\ 'cterm': 'NONE',
\ 'gui': 'bold',
\ }
\}
let expect = {
\ 'name': 'VitalVimHighlightCase5',
\ 'attrs': {
\ 'ctermfg': '100',
\ 'gui': 'bold',
\ 'guifg': '#333333',
\ }
\}
Assert NotEquals(Highlight.get('VitalVimHighlightCase5'), expect)
call Highlight.set(highlight, {'default': 1})
Assert NotEquals(Highlight.get('VitalVimHighlightCase5'), expect)
call Highlight.set(highlight, {'default': 0})
Assert Equals(Highlight.get('VitalVimHighlightCase5'), expect)
End
Context link
It create a new highlight link by {highlight}
let highlight = {
\ 'name': 'VitalVimHighlightCase6',
\ 'attrs': {
\ 'link': 'VitalVimHighlightCase1',
\ }
\}
Throws /E411/ Highlight.get('VitalVimHighlightCase6')
call Highlight.set(highlight)
Assert Equals(Highlight.get('VitalVimHighlightCase6'), highlight)
End
It overwrite an existing highlight link by {highlight}
call Highlight.set({
\ 'name': 'VitalVimHighlightCase6',
\ 'attrs': {
\ 'link': 'VitalVimHighlightCase1',
\ }
\})
let highlight = {
\ 'name': 'VitalVimHighlightCase6',
\ 'attrs': {
\ 'link': 'VitalVimHighlightCase3',
\ }
\}
Assert NotEquals(Highlight.get('VitalVimHighlightCase6'), highlight)
call Highlight.set(highlight)
Assert Equals(Highlight.get('VitalVimHighlightCase6'), highlight)
End
It does not overwrite an existing highlight link when {options.default} is specified
call Highlight.set({
\ 'name': 'VitalVimHighlightCase6',
\ 'attrs': {
\ 'link': 'VitalVimHighlightCase1',
\ }
\})
let highlight = {
\ 'name': 'VitalVimHighlightCase6',
\ 'attrs': {
\ 'link': 'VitalVimHighlightCase3',
\ }
\}
Assert NotEquals(Highlight.get('VitalVimHighlightCase6'), highlight)
call Highlight.set(highlight, {'default': 1})
Assert NotEquals(Highlight.get('VitalVimHighlightCase6'), highlight)
call Highlight.set(highlight, {'default': 0})
Assert Equals(Highlight.get('VitalVimHighlightCase6'), highlight)
End
It fails silently to create a highlight link on an existing highlight
let highlight = {
\ 'name': 'VitalVimHighlightCase2',
\ 'attrs': {
\ 'link': 'VitalVimHighlightCase1',
\ }
\}
call Highlight.set(highlight)
Assert NotEquals(Highlight.get('VitalVimHighlightCase2'), highlight)
End
It create a highlight link on an existing highlight when {options.force} is specified
let highlight = {
\ 'name': 'VitalVimHighlightCase2',
\ 'attrs': {
\ 'link': 'VitalVimHighlightCase1',
\ }
\}
call Highlight.set(highlight, {'force': 1})
Assert NotEquals(Highlight.get('VitalVimHighlightCase2'), highlight)
End
End
End
End