let s:suite = themis#suite('parser')
let s:assert = themis#helper('assert')

let g:kind = {
      \ 'name' : 'hoge',
      \ 'default_action' : 'open',
      \ 'action_table': {},
      \ }
let g:kind.action_table.open = {
      \ 'is_selectable' : 1,
      \ }
function! g:kind.action_table.open.func(candidate) abort
  echo 'hoge'
endfunction

let g:source = {
      \ 'name' : 'hoge',
      \ 'is_volatile' : 1,
      \ 'variables' : {'foo' : 'foo'}
      \}
function! g:source.gather_candidates(args, context) abort "{{{
  " Add dummy candidate.
  let g:candidates = [ a:context.input ]

  call map(g:candidates, '{
        \ "word" : v:val,
        \ "source" : "hoge",
        \ "kind" : "hoge",
        \}')

  return g:candidates
endfunction"}}}

function! s:suite.source() abort
  call s:assert.equals(unite#define_kind(g:kind), 0)

  call s:assert.equals(unite#define_source(g:source), 0)
  call s:assert.true(!empty(unite#get_all_sources(g:source.name)))

  call s:assert.equals(unite#undef_kind(g:kind.name), 0)

  call s:assert.equals(unite#undef_source(g:source.name), 0)
  call s:assert.true(empty(unite#get_all_sources(g:source.name)))
  call s:assert.equals(unite#define_source(g:source), 0)
endfunction

" vim:foldmethod=marker:fen: