Describe question_pattern
  function! s:add_line(str)
    put! =a:str
  endfunction
  function! s:add_lines(lines)
    for line in reverse(deepcopy(a:lines))
      put! =line
    endfor
  endfunction
  function! s:get_pos_char()
    return getline('.')[col('.')-1]
  endfunction

  function! s:reset_buffer()
    :1,$ delete
    let s:lines = ['1pattern_?', '2pattern_??', '3?pattern_c']
    call s:add_lines(s:lines)
    normal! Gddgg0zt
  endfunction

  Before all
    let PowerAssert = powerassert#import()
    execute PowerAssert.define('PowerAssert')
    let s:assert = PowerAssert.assert

    map /  <Plug>(incsearch-forward)
    map ?  <Plug>(incsearch-backward)
    map g/ <Plug>(incsearch-stay)
    call s:reset_buffer()
  End

  Before each
    :1
    normal! zt
  End

  Describe search register @/
    It @/ should be ? with `?\?`
      :$
      exec "normal" "?\\?\<CR>"
      PowerAssert @/ is# '?'
    End

    It @/ should be \/ with `/\/`
      exec "normal" "/\\/\<CR>"
      PowerAssert @/ is# '\/'
    End
  End

End
