Describe airline.vim
  Before
    let g:airline_statusline_funcrefs = []
  End

  It should run user funcrefs first
    call airline#add_statusline_func('MyFuncref')
    let &statusline = ''
    call airline#update_statusline()
    Assert Match(airline#statusline(1), 'hello world')
  End

  It should not change the statusline with -1
    call airline#add_statusline_funcref(function('MyIgnoreFuncref'))
    let &statusline = 'foo'
    call airline#update_statusline()
    Assert Equals(&statusline, 'foo')
  End

  It should support multiple chained funcrefs
    call airline#add_statusline_func('MyAppend1')
    call airline#add_statusline_func('MyAppend2')
    call airline#update_statusline()
    Assert Match(airline#statusline(1), 'helloworld')
  End

  It should allow users to redefine sections
    let g:airline_section_a = airline#section#create(['mode', 'mode'])
    call airline#update_statusline()
    Assert Match(airline#statusline(1), '%{airline#util#wrap(airline#parts#mode(),0)}%#airline_a#%#airline_a_bold#%{airline#util#wrap(airline#parts#mode(),0)}%#airline_a#')
  End

  It should remove funcrefs properly
    let c = len(g:airline_statusline_funcrefs)
    call airline#add_statusline_func('MyIgnoreFuncref')
    call airline#remove_statusline_func('MyIgnoreFuncref')
    Assert Equals(len(g:airline_statusline_funcrefs), c)
  End

  It should overwrite the statusline with active and inactive splits
    wincmd s
    Assert NotMatch(airline#statusline(1), 'inactive')
    Assert Match(airline#statusline(2), 'inactive')
    wincmd c
  End

  It should collapse the inactive split if the variable is set true
    let g:airline_inactive_collapse = 1
    wincmd s
    Assert NotMatch(getwinvar(2, '&statusline'), 'airline#parts#mode')
    wincmd c
  end

  It should collapse the inactive split if the variable is set false
    let g:airline_inactive_collapse = 0
    wincmd s
    Assert NotEquals(getwinvar(2, '&statusline'), 'airline#parts#mode')
    wincmd c
  End

  It should include check_mode
    Assert Match(airline#statusline(1), 'airline#check_mode')
  End
End
