" Test ga normal command, and :ascii Ex command.
func Do_ga(c)
  call setline(1, a:c)
  let l:a = execute("norm 1goga")
  let l:b = execute("ascii")
  call assert_equal(l:a, l:b)
  return l:a
endfunc

func Test_ga_command()
  new
  set display=uhex
  call assert_equal("\nNUL",                            Do_ga(''))
  call assert_equal("\n<<01>>  1,  Hex 01,  Oct 001, Digr SH", Do_ga("\x01"))
  call assert_equal("\n<<09>>  9,  Hex 09,  Oct 011, Digr HT", Do_ga("\t"))

  set display=
  call assert_equal("\nNUL",                             Do_ga(''))
  call assert_equal("\n<^A>  1,  Hex 01,  Oct 001, Digr SH",    Do_ga("\x01"))
  call assert_equal("\n<^I>  9,  Hex 09,  Oct 011, Digr HT",    Do_ga("\t"))
  call assert_equal("\n<^@>  0,  Hex 00,  Octal 000",    Do_ga("\n"))

  call assert_equal("\n<e>  101,  Hex 65,  Octal 145",   Do_ga('e'))

  " Test a few multi-bytes characters.
  call assert_equal("\n<é> 233, Hex 00e9, Oct 351, Digr e'",    Do_ga('é'))
  call assert_equal("\n<ẻ> 7867, Hex 1ebb, Oct 17273, Digr e2", Do_ga('ẻ'))

  " Test with combining characters.
  call assert_equal("\n<e>  101,  Hex 65,  Octal 145 < ́> 769, Hex 0301, Octal 1401", Do_ga("e\u0301"))
  call assert_equal("\n<e>  101,  Hex 65,  Octal 145 < ́> 769, Hex 0301, Octal 1401 < ̱> 817, Hex 0331, Octal 1461", Do_ga("e\u0301\u0331"))
  call assert_equal("\n<e>  101,  Hex 65,  Octal 145 < ́> 769, Hex 0301, Octal 1401 < ̱> 817, Hex 0331, Octal 1461 < ̸> 824, Hex 0338, Octal 1470", Do_ga("e\u0301\u0331\u0338"))

  " When using Mac fileformat, CR instead of NL is used for line termination
  enew!
  set fileformat=mac
  call assert_equal("\n<^J>  10,  Hex 0a,  Oct 012, Digr NU",    Do_ga("\r"))

  bwipe!
endfunc

" vim: shiftwidth=2 sts=2 expandtab
