" set verbose=1

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

let s:runtimepath_save = &runtimepath
let s:path = fnamemodify('.cache', ':p') . '/'
let s:filetype_save = &l:filetype

function! s:suite.before_each() abort
  call dein#min#_init()
  let &runtimepath = s:runtimepath_save
  let &l:filetype = s:filetype_save
  let g:temp = tempname()
  let g:dein#install_progress_type = 'echo'
endfunction

function! s:suite.state() abort
  call delete(s:path.'/state_'.g:dein#_progname.'.vim')

  call dein#begin(s:path)

  function! Test() abort
  endfunction

  call dein#add('Shougo/deoplete.nvim',
        \ {'hook_source': function('Test')})
  call s:assert.equals(dein#end(), 0)

  let plugins = deepcopy(g:dein#_plugins)

  call s:assert.equals(dein#util#_save_state(1), 0)

  let runtimepath = &runtimepath

  let &runtimepath = s:runtimepath_save

  " call s:assert.equals(dein#load_state(s:path, 1), 0)

  "call s:assert.equals(&runtimepath, runtimepath)
  "call s:assert.equals(dein#_plugins, plugins)
endfunction

function! s:suite.state_error() abort
  call dein#begin(s:path)

  call dein#add('Shougo/deoplete.nvim')
  call s:assert.equals(dein#save_state(), 1)
endfunction