" don't spam the user when Vim is started in Vi compatibility mode
let s:cpo_save = &cpo
set cpo&vim

scriptencoding utf-8

func! Test_EncodePath_simple() abort
	let l:uri = '/simple/foo'
	let l:expected = '/simple/foo'

	let l:actual = go#uri#EncodePath(l:uri)
	call assert_equal(l:expected, l:actual)
endfunc

func! Test_EncodePath_multibyte() abort
  let l:uri = '/multi-byte/⌘⌘'
  let l:expected = '/multi-byte/%E2%8C%98%E2%8C%98'

	let l:actual = go#uri#EncodePath(l:uri)
	call assert_equal(l:expected, l:actual)
endfunc

func! Test_Decode_simple() abort
	let l:uri = '/simple/foo'
	let l:expected = '/simple/foo'

	let l:actual = go#uri#Decode(l:uri)
	call assert_equal(l:expected, l:actual)
endfunc

func! Test_Decode_multibyte() abort
  let l:uri = '/multi-byte/%E2%8C%98%E2%8C%98'
  let l:expected = '/multi-byte/⌘⌘'
	let l:actual = go#uri#Decode(l:uri)
	call assert_equal(l:expected, l:actual)
endfunc

func! Test_Roundtrip_simple() abort
	let l:expected = '/simple/foo'

	let l:actual = go#uri#Decode(go#uri#EncodePath(l:expected))
	call assert_equal(l:expected, l:actual)
endfunc

func! Test_Roundtrip_multibyte() abort
  let l:expected = '/multi-byte/⌘⌘'

	let l:actual = go#uri#Decode(go#uri#EncodePath(l:expected))
  call assert_equal(l:expected, l:actual)
endfunc

" restore Vi compatibility settings
let &cpo = s:cpo_save
unlet s:cpo_save

" vim: sw=2 ts=2 et