Execute (Setup):
  let g:dir = fnamemodify(g:vader_file, ':p:h')
  Log 'Test directory: ' . g:dir

Execute (fzf#run with dir option):
  let cwd = getcwd()
  let result = fzf#run({ 'options': '--filter=vdr', 'dir': g:dir })
  AssertEqual ['fzf.vader'], result
  AssertEqual getcwd(), cwd

  let result = sort(fzf#run({ 'options': '--filter e', 'dir': g:dir }))
  AssertEqual ['fzf.vader', 'test_go.rb'], result
  AssertEqual getcwd(), cwd

Execute (fzf#run with Funcref command):
  let g:ret = []
  function! g:FzfTest(e)
    call add(g:ret, a:e)
  endfunction
  let result = sort(fzf#run({ 'sink': function('g:FzfTest'), 'options': '--filter e', 'dir': g:dir }))
  AssertEqual ['fzf.vader', 'test_go.rb'], result
  AssertEqual ['fzf.vader', 'test_go.rb'], sort(g:ret)

Execute (fzf#run with string source):
  let result = sort(fzf#run({ 'source': 'echo hi', 'options': '-f i' }))
  AssertEqual ['hi'], result

Execute (fzf#run with list source):
  let result = sort(fzf#run({ 'source': ['hello', 'world'], 'options': '-f e' }))
  AssertEqual ['hello'], result
  let result = sort(fzf#run({ 'source': ['hello', 'world'], 'options': '-f o' }))
  AssertEqual ['hello', 'world'], result

Execute (fzf#run with string source):
  let result = sort(fzf#run({ 'source': 'echo hi', 'options': '-f i' }))
  AssertEqual ['hi'], result

Execute (Cleanup):
  unlet g:dir
  Restore
