Include: ../include/setup.vader

Execute (neomake#signs#DefineHighlights: SignColumn bg=NONE):
  hi clear Error
  hi clear Normal
  hi clear LineNr
  highlight LineNr ctermfg=250 guifg=#c2c2c3
  highlight! link SignColumn LineNr
  AssertEqual neomake#utils#GetHighlight('SignColumn', 'bg'), 'NONE'
  AssertEqual neomake#utils#GetHighlight('SignColumn', 'bg', 'Normal'), 'NONE'

  " Normal and Error are not defined.
  call neomake#signs#DefineHighlights()
  let highlights = sort(filter(split(neomake#utils#redir('hi'), '\n'),
  \ 'v:val =~# ''^NeomakeErrorSignDefault'''))
  AssertEqual highlights, [
  \ 'NeomakeErrorSignDefault xxx cleared',
  \ ]

  " Normal is not defined, only fg for Error.
  highlight Error ctermfg=166 guifg=#e45649

  call neomake#signs#DefineHighlights()
  let highlights = sort(filter(split(neomake#utils#redir('hi'), '\n'),
  \ 'v:val =~# ''^NeomakeErrorSignDefault'''))
  AssertEqual highlights, [
  \ 'NeomakeErrorSignDefault xxx cleared',
  \ ]

  highlight Normal ctermfg=23 ctermbg=255 guifg=#494b53 guibg=#fafafa
  AssertEqual neomake#utils#GetHighlight('SignColumn', 'bg', 'Normal'), '255'

  call neomake#signs#DefineHighlights()
  let highlights = sort(filter(split(neomake#utils#redir('hi'), '\n'),
  \ 'v:val =~# ''^NeomakeError'''))

  AssertEqual highlights, [
  \ 'NeomakeError   xxx links to SpellBad',
  \ 'NeomakeErrorSign xxx links to NeomakeErrorSignDefault',
  \ 'NeomakeErrorSignDefault xxx ctermfg=166 ctermbg=255 guifg=#e45649 guibg=#fafafa',
  \ ]

Execute (neomake#signs#DefineHighlights with "NONE" SignColumn, no Normal):
  hi clear Normal
  hi clear SignColumn
  highlight SignColumn ctermfg=250 guifg=#c2c2c3
  highlight Error cterm=bold ctermfg=166 ctermbg=255 gui=bold guifg=#e45649 guibg=#fafafa

  call neomake#signs#DefineHighlights()
  let highlights = sort(filter(split(neomake#utils#redir('hi'), '\n'),
  \ 'v:val =~# ''^NeomakeErrorSignDefault'''))

  AssertEqual highlights, [
  \ 'NeomakeErrorSignDefault xxx ctermfg=255 guifg=#fafafa',
  \ ]

Execute (neomake#signs#DefineHighlights: checks same gui bg/fg separately):
  hi clear Normal
  highlight Normal ctermbg=1 guibg=#aaaaaa
  if substitute(neomake#utils#redir('hi Normal'), '^\s+', '', '') !=# 'Normal         xxx ctermbg=1 guibg=#aaaaaa'
    NeomakeTestsSkip 'Setting ctermbg on Normal is buggy'  " nvim 0.1.7
  else
    hi clear Error
    hi clear SignColumn

    call neomake#signs#DefineHighlights()
    let highlights = sort(filter(split(neomake#utils#redir('hi'), '\n'),
    \ 'v:val =~# ''^NeomakeErrorSignDefault'''))
    AssertEqual highlights, [
    \ 'NeomakeErrorSignDefault xxx ctermbg=1 guibg=#aaaaaa',
    \ ]

    highlight Error      ctermbg=1 guibg=#bbbbbb
    call neomake#signs#DefineHighlights()
    let highlights = sort(filter(split(neomake#utils#redir('hi'), '\n'),
    \ 'v:val =~# ''^NeomakeErrorSignDefault'''))
    AssertEqual highlights, [
    \ 'NeomakeErrorSignDefault xxx ctermbg=1 guifg=#bbbbbb guibg=#aaaaaa',
    \ ]

    highlight SignColumn ctermbg=166 guifg=#bbbbbb
    call neomake#signs#DefineHighlights()
    let highlights = sort(filter(split(neomake#utils#redir('hi'), '\n'),
    \ 'v:val =~# ''^NeomakeErrorSignDefault'''))
    AssertEqual highlights, [
    \ 'NeomakeErrorSignDefault xxx ctermfg=1 ctermbg=166 guifg=#bbbbbb guibg=#aaaaaa',
    \ ]
  endif

Execute (neomake#signs#DefineHighlights: all NONE):
  hi clear Error
  hi clear Normal
  hi clear SignColumn

  call neomake#signs#DefineHighlights()
  let highlights = sort(filter(split(neomake#utils#redir('hi'), '\n'),
  \ 'v:val =~# ''^NeomakeErrorSignDefault'''))

  AssertEqual highlights, [
  \ 'NeomakeErrorSignDefault xxx cleared',
  \ ]

Execute (neomake#utils#GetHighlight: correct mode with reverse):
  highlight clear NeomakeTest
  highlight NeomakeTest ctermfg=0 guifg=black ctermbg=7 guibg=white
  AssertEqual neomake#utils#GetHighlight('NeomakeTest', 'fg'), '0'
  AssertEqual neomake#utils#GetHighlight('NeomakeTest', 'fg#'), 'black'

  highlight NeomakeTest cterm=reverse
  AssertEqual neomake#utils#GetHighlight('NeomakeTest', 'fg'), '7'
  AssertEqual neomake#utils#GetHighlight('NeomakeTest', 'fg#'), 'black'

  highlight NeomakeTest cterm=NONE gui=reverse
  AssertEqual neomake#utils#GetHighlight('NeomakeTest', 'fg'), '0'
  AssertEqual neomake#utils#GetHighlight('NeomakeTest', 'fg#'), 'white'