" Tests for expressions.

func Test_equal()
  let base = {}
  func base.method()
    return 1
  endfunc
  func base.other() dict
    return 1
  endfunc
  let instance = copy(base)
  call assert_true(base.method == instance.method)
  call assert_true([base.method] == [instance.method])
  call assert_true(base.other == instance.other)
  call assert_true([base.other] == [instance.other])

  call assert_false(base.method == base.other)
  call assert_false([base.method] == [base.other])
  call assert_false(base.method == instance.other)
  call assert_false([base.method] == [instance.other])

  call assert_fails('echo base.method > instance.method')
endfunc

func Test_version()
  call assert_true(has('patch-7.4.001'))
  call assert_true(has('patch-7.4.01'))
  call assert_true(has('patch-7.4.1'))
  call assert_true(has('patch-6.9.999'))
  call assert_true(has('patch-7.1.999'))
  call assert_true(has('patch-7.4.123'))

  call assert_false(has('patch-7'))
  call assert_false(has('patch-7.4'))
  call assert_false(has('patch-7.4.'))
  call assert_false(has('patch-9.1.0'))
  call assert_false(has('patch-9.9.1'))
endfunc

func Test_dict()
  let d = {'': 'empty', 'a': 'a', 0: 'zero'}
  call assert_equal('empty', d[''])
  call assert_equal('a', d['a'])
  call assert_equal('zero', d[0])
  call assert_true(has_key(d, ''))
  call assert_true(has_key(d, 'a'))

  let d[''] = 'none'
  let d['a'] = 'aaa'
  call assert_equal('none', d[''])
  call assert_equal('aaa', d['a'])
endfunc

func Test_strgetchar()
  call assert_equal(char2nr('a'), strgetchar('axb', 0))
  call assert_equal(char2nr('x'), strgetchar('axb', 1))
  call assert_equal(char2nr('b'), strgetchar('axb', 2))

  call assert_equal(-1, strgetchar('axb', -1))
  call assert_equal(-1, strgetchar('axb', 3))
  call assert_equal(-1, strgetchar('', 0))
endfunc

func Test_strcharpart()
  call assert_equal('a', strcharpart('axb', 0, 1))
  call assert_equal('x', strcharpart('axb', 1, 1))
  call assert_equal('b', strcharpart('axb', 2, 1))
  call assert_equal('xb', strcharpart('axb', 1))

  call assert_equal('', strcharpart('axb', 1, 0))
  call assert_equal('', strcharpart('axb', 1, -1))
  call assert_equal('', strcharpart('axb', -1, 1))
  call assert_equal('', strcharpart('axb', -2, 2))

  call assert_equal('a', strcharpart('axb', -1, 2))
endfunc

func Test_getreg_empty_list()
  call assert_equal('', getreg('x'))
  call assert_equal([], getreg('x', 1, 1))
  let x = getreg('x', 1, 1)
  let y = x
  call add(x, 'foo')
  call assert_equal(['foo'], y)
endfunc

func Test_loop_over_null_list()
  let null_list = test_null_list()
  for i in null_list
    call assert_report('should not get here')
  endfor
endfunc

func Test_compare_null_dict()
  call assert_fails('let x = test_null_dict()[10]')
  call assert_equal({}, {})
  call assert_equal(test_null_dict(), test_null_dict())
  call assert_notequal({}, test_null_dict())
endfunc

func Test_set_reg_null_list()
  call setreg('x', test_null_list())
endfunc

func Test_special_char()
  " The failure is only visible using valgrind.
  call assert_fails('echo "\<C-">')
endfunc

func Test_option_value()
  " boolean
  set bri
  call assert_equal(1, &bri)
  set nobri
  call assert_equal(0, &bri)

  " number
  set ts=1
  call assert_equal(1, &ts)
  set ts=8
  call assert_equal(8, &ts)

  " string
  exe "set cedit=\<Esc>"
  call assert_equal("\<Esc>", &cedit)
  set cpo=
  call assert_equal("", &cpo)
  set cpo=abcdefgi
  call assert_equal("abcdefgi", &cpo)
  set cpo&vim
endfunc

function Test_printf_misc()
  call assert_equal('123', printf('123'))
  call assert_fails("call printf('123', 3)", "E767:")

  call assert_equal('123', printf('%d', 123))
  call assert_equal('123', printf('%i', 123))
  call assert_equal('123', printf('%D', 123))
  call assert_equal('123', printf('%U', 123))
  call assert_equal('173', printf('%o', 123))
  call assert_equal('173', printf('%O', 123))
  call assert_equal('7b', printf('%x', 123))
  call assert_equal('7B', printf('%X', 123))

  call assert_equal('123', printf('%hd', 123))
  call assert_equal('-123', printf('%hd', -123))
  call assert_equal('-1', printf('%hd', 0xFFFF))
  call assert_equal('-1', printf('%hd', 0x1FFFFF))

  call assert_equal('123', printf('%hu', 123))
  call assert_equal('65413', printf('%hu', -123))
  call assert_equal('65535', printf('%hu', 0xFFFF))
  call assert_equal('65535', printf('%hu', 0x1FFFFF))

  call assert_equal('123', printf('%ld', 123))
  call assert_equal('-123', printf('%ld', -123))
  call assert_equal('65535', printf('%ld', 0xFFFF))
  call assert_equal('131071', printf('%ld', 0x1FFFF))

  if has('ebcdic')
    call assert_equal('#', printf('%c', 123))
  else
    call assert_equal('{', printf('%c', 123))
  endif
  call assert_equal('abc', printf('%s', 'abc'))
  call assert_equal('abc', printf('%S', 'abc'))

  call assert_equal('+123', printf('%+d', 123))
  call assert_equal('-123', printf('%+d', -123))
  call assert_equal('+123', printf('%+ d', 123))
  call assert_equal(' 123', printf('% d', 123))
  call assert_equal(' 123', printf('%  d', 123))
  call assert_equal('-123', printf('% d', -123))

  call assert_equal('123', printf('%2d', 123))
  call assert_equal('   123', printf('%6d', 123))
  call assert_equal('000123', printf('%06d', 123))
  call assert_equal('+00123', printf('%+06d', 123))
  call assert_equal(' 00123', printf('% 06d', 123))
  call assert_equal('  +123', printf('%+6d', 123))
  call assert_equal('   123', printf('% 6d', 123))
  call assert_equal('  -123', printf('% 6d', -123))

  " Test left adjusted.
  call assert_equal('123   ', printf('%-6d', 123))
  call assert_equal('+123  ', printf('%-+6d', 123))
  call assert_equal(' 123  ', printf('%- 6d', 123))
  call assert_equal('-123  ', printf('%- 6d', -123))

  call assert_equal('  00123', printf('%7.5d', 123))
  call assert_equal(' -00123', printf('%7.5d', -123))
  call assert_equal(' +00123', printf('%+7.5d', 123))
  " Precision field should not be used when combined with %0
  call assert_equal('  00123', printf('%07.5d', 123))
  call assert_equal(' -00123', printf('%07.5d', -123))

  call assert_equal('  123', printf('%*d', 5, 123))
  call assert_equal('123  ', printf('%*d', -5, 123))
  call assert_equal('00123', printf('%.*d', 5, 123))
  call assert_equal('  123', printf('% *d', 5, 123))
  call assert_equal(' +123', printf('%+ *d', 5, 123))

  call assert_equal('foobar', printf('%.*s',  9, 'foobar'))
  call assert_equal('foo',    printf('%.*s',  3, 'foobar'))
  call assert_equal('',       printf('%.*s',  0, 'foobar'))
  call assert_equal('foobar', printf('%.*s', -1, 'foobar'))

  " Simple quote (thousand grouping char) is ignored.
  call assert_equal('+00123456', printf("%+'09d", 123456))

  " Unrecognized format specifier kept as-is.
  call assert_equal('_123', printf("%_%d", 123))

  " Test alternate forms.
  call assert_equal('0x7b', printf('%#x', 123))
  call assert_equal('0X7B', printf('%#X', 123))
  call assert_equal('0173', printf('%#o', 123))
  call assert_equal('0173', printf('%#O', 123))
  call assert_equal('abc', printf('%#s', 'abc'))
  call assert_equal('abc', printf('%#S', 'abc'))
  call assert_equal('  0173', printf('%#6o', 123))
  call assert_equal(' 00173', printf('%#6.5o', 123))
  call assert_equal('  0173', printf('%#6.2o', 123))
  call assert_equal('  0173', printf('%#6.2o', 123))
  call assert_equal('0173', printf('%#2.2o', 123))

  call assert_equal(' 00123', printf('%6.5d', 123))
  call assert_equal(' 0007b', printf('%6.5x', 123))

  call assert_equal('123', printf('%.2d', 123))
  call assert_equal('0123', printf('%.4d', 123))
  call assert_equal('0000000123', printf('%.10d', 123))
  call assert_equal('123', printf('%.0d', 123))

  call assert_equal('abc', printf('%2s', 'abc'))
  call assert_equal('abc', printf('%2S', 'abc'))
  call assert_equal('abc', printf('%.4s', 'abc'))
  call assert_equal('abc', printf('%.4S', 'abc'))
  call assert_equal('ab', printf('%.2s', 'abc'))
  call assert_equal('ab', printf('%.2S', 'abc'))
  call assert_equal('', printf('%.0s', 'abc'))
  call assert_equal('', printf('%.s', 'abc'))
  call assert_equal(' abc', printf('%4s', 'abc'))
  call assert_equal(' abc', printf('%4S', 'abc'))
  call assert_equal('0abc', printf('%04s', 'abc'))
  call assert_equal('0abc', printf('%04S', 'abc'))
  call assert_equal('abc ', printf('%-4s', 'abc'))
  call assert_equal('abc ', printf('%-4S', 'abc'))

  call assert_equal('1%', printf('%d%%', 1))
endfunc

function Test_printf_float()
  if has('float')
    call assert_equal('1.000000', printf('%f', 1))
    call assert_equal('1.230000', printf('%f', 1.23))
    call assert_equal('1.230000', printf('%F', 1.23))
    call assert_equal('9999999.9', printf('%g', 9999999.9))
    call assert_equal('9999999.9', printf('%G', 9999999.9))
    call assert_equal('1.00000001e7', printf('%.8g', 10000000.1))
    call assert_equal('1.00000001E7', printf('%.8G', 10000000.1))
    call assert_equal('1.230000e+00', printf('%e', 1.23))
    call assert_equal('1.230000E+00', printf('%E', 1.23))
    call assert_equal('1.200000e-02', printf('%e', 0.012))
    call assert_equal('-1.200000e-02', printf('%e', -0.012))
    call assert_equal('0.33', printf('%.2f', 1.0/3.0))
    call assert_equal('  0.33', printf('%6.2f', 1.0/3.0))
    call assert_equal(' -0.33', printf('%6.2f', -1.0/3.0))
    call assert_equal('000.33', printf('%06.2f', 1.0/3.0))
    call assert_equal('-00.33', printf('%06.2f', -1.0/3.0))
    call assert_equal('-00.33', printf('%+06.2f', -1.0/3.0))
    call assert_equal('+00.33', printf('%+06.2f', 1.0/3.0))
    call assert_equal(' 00.33', printf('% 06.2f', 1.0/3.0))
    call assert_equal('000.33', printf('%06.2g', 1.0/3.0))
    call assert_equal('-00.33', printf('%06.2g', -1.0/3.0))
    call assert_equal('0.33', printf('%3.2f', 1.0/3.0))
    call assert_equal('003.33e-01', printf('%010.2e', 1.0/3.0))
    call assert_equal(' 03.33e-01', printf('% 010.2e', 1.0/3.0))
    call assert_equal('+03.33e-01', printf('%+010.2e', 1.0/3.0))
    call assert_equal('-03.33e-01', printf('%010.2e', -1.0/3.0))

    " When precision is 0, the dot should be omitted.
    call assert_equal('  2', printf('%3.f', 7.0/3.0))
    call assert_equal('  2', printf('%3.g', 7.0/3.0))
    call assert_equal('  2e+00', printf('%7.e', 7.0/3.0))

    " Float zero can be signed.
    call assert_equal('+0.000000', printf('%+f', 0.0))
    call assert_equal('0.000000', printf('%f', 1.0/(1.0/0.0)))
    call assert_equal('-0.000000', printf('%f', 1.0/(-1.0/0.0)))
    call assert_equal('0.0', printf('%s', 1.0/(1.0/0.0)))
    call assert_equal('-0.0', printf('%s', 1.0/(-1.0/0.0)))
    call assert_equal('0.0', printf('%S', 1.0/(1.0/0.0)))
    call assert_equal('-0.0', printf('%S', 1.0/(-1.0/0.0)))

    " Float infinity can be signed.
    call assert_equal('inf', printf('%f', 1.0/0.0))
    call assert_equal('-inf', printf('%f', -1.0/0.0))
    call assert_equal('inf', printf('%g', 1.0/0.0))
    call assert_equal('-inf', printf('%g', -1.0/0.0))
    call assert_equal('inf', printf('%e', 1.0/0.0))
    call assert_equal('-inf', printf('%e', -1.0/0.0))
    call assert_equal('INF', printf('%F', 1.0/0.0))
    call assert_equal('-INF', printf('%F', -1.0/0.0))
    call assert_equal('INF', printf('%E', 1.0/0.0))
    call assert_equal('-INF', printf('%E', -1.0/0.0))
    call assert_equal('INF', printf('%E', 1.0/0.0))
    call assert_equal('-INF', printf('%G', -1.0/0.0))
    call assert_equal('+inf', printf('%+f', 1.0/0.0))
    call assert_equal('-inf', printf('%+f', -1.0/0.0))
    call assert_equal(' inf', printf('% f',  1.0/0.0))
    call assert_equal('   inf', printf('%6f', 1.0/0.0))
    call assert_equal('  -inf', printf('%6f', -1.0/0.0))
    call assert_equal('   inf', printf('%6g', 1.0/0.0))
    call assert_equal('  -inf', printf('%6g', -1.0/0.0))
    call assert_equal('  +inf', printf('%+6f', 1.0/0.0))
    call assert_equal('   inf', printf('% 6f', 1.0/0.0))
    call assert_equal('  +inf', printf('%+06f', 1.0/0.0))
    call assert_equal('inf   ', printf('%-6f', 1.0/0.0))
    call assert_equal('-inf  ', printf('%-6f', -1.0/0.0))
    call assert_equal('+inf  ', printf('%-+6f', 1.0/0.0))
    call assert_equal(' inf  ', printf('%- 6f', 1.0/0.0))
    call assert_equal('-INF  ', printf('%-6F', -1.0/0.0))
    call assert_equal('+INF  ', printf('%-+6F', 1.0/0.0))
    call assert_equal(' INF  ', printf('%- 6F', 1.0/0.0))
    call assert_equal('INF   ', printf('%-6G', 1.0/0.0))
    call assert_equal('-INF  ', printf('%-6G', -1.0/0.0))
    call assert_equal('INF   ', printf('%-6E', 1.0/0.0))
    call assert_equal('-INF  ', printf('%-6E', -1.0/0.0))
    call assert_equal('inf', printf('%s', 1.0/0.0))
    call assert_equal('-inf', printf('%s', -1.0/0.0))

    " Test special case where max precision is truncated at 340.
    call assert_equal('1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.330f', 1.0))
    call assert_equal('1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.340f', 1.0))
    call assert_equal('1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.350f', 1.0))

    " Float nan (not a number) has no sign.
    call assert_equal('nan', printf('%f', sqrt(-1.0)))
    call assert_equal('nan', printf('%f', 0.0/0.0))
    call assert_equal('nan', printf('%f', -0.0/0.0))
    call assert_equal('nan', printf('%g', 0.0/0.0))
    call assert_equal('nan', printf('%e', 0.0/0.0))
    call assert_equal('NAN', printf('%F', 0.0/0.0))
    call assert_equal('NAN', printf('%G', 0.0/0.0))
    call assert_equal('NAN', printf('%E', 0.0/0.0))
    call assert_equal('NAN', printf('%F', -0.0/0.0))
    call assert_equal('NAN', printf('%G', -0.0/0.0))
    call assert_equal('NAN', printf('%E', -0.0/0.0))
    call assert_equal('   nan', printf('%6f', 0.0/0.0))
    call assert_equal('   nan', printf('%06f', 0.0/0.0))
    call assert_equal('nan   ', printf('%-6f', 0.0/0.0))
    call assert_equal('nan   ', printf('%- 6f', 0.0/0.0))
    call assert_equal('nan', printf('%s', 0.0/0.0))
    call assert_equal('nan', printf('%s', -0.0/0.0))
    call assert_equal('nan', printf('%S', 0.0/0.0))
    call assert_equal('nan', printf('%S', -0.0/0.0))

    call assert_fails('echo printf("%f", "a")', 'E807:')
  endif
endfunc

function Test_printf_errors()
  call assert_fails('echo printf("%d", {})', 'E728:')
  call assert_fails('echo printf("%d", [])', 'E745:')
  call assert_fails('echo printf("%d", 1, 2)', 'E767:')
  call assert_fails('echo printf("%*d", 1)', 'E766:')
  call assert_fails('echo printf("%d", 1.2)', 'E805:')
endfunc

function Test_max_min_errors()
  call assert_fails('call max(v:true)', 'E712:')
  call assert_fails('call max(v:true)', 'max()')
  call assert_fails('call min(v:true)', 'E712:')
  call assert_fails('call min(v:true)', 'min()')
endfunc

function Test_printf_64bit()
  if has('num64')
    call assert_equal("123456789012345", printf('%d', 123456789012345))
  endif
endfunc

function Test_printf_spec_s()
  " number
  call assert_equal("1234567890", printf('%s', 1234567890))

  " string
  call assert_equal("abcdefgi", printf('%s', "abcdefgi"))

  " float
  if has('float')
    call assert_equal("1.23", printf('%s', 1.23))
  endif

  " list
  let value = [1, 'two', ['three', 4]]
  call assert_equal(string(value), printf('%s', value))

  " dict
  let value = {'key1' : 'value1', 'key2' : ['list', 'value'], 'key3' : {'dict' : 'value'}}
  call assert_equal(string(value), printf('%s', value))

  " funcref
  call assert_equal('printf', printf('%s', function('printf')))

  " partial
  call assert_equal(string(function('printf', ['%s'])), printf('%s', function('printf', ['%s'])))
endfunc

function Test_printf_spec_b()
  call assert_equal("0", printf('%b', 0))
  call assert_equal("00001100", printf('%08b', 12))
  call assert_equal("11111111", printf('%08b', 0xff))
  call assert_equal("   1111011", printf('%10b', 123))
  call assert_equal("0001111011", printf('%010b', 123))
  call assert_equal(" 0b1111011", printf('%#10b', 123))
  call assert_equal("0B01111011", printf('%#010B', 123))
  call assert_equal("1001001100101100000001011010010", printf('%b', 1234567890))
  if has('num64')
    call assert_equal("11100000100100010000110000011011101111101111001", printf('%b', 123456789012345))
    call assert_equal("1111111111111111111111111111111111111111111111111111111111111111", printf('%b', -1))
  else
    call assert_equal("11111111111111111111111111111111", printf('%b', -1))
  endif
endfunc

func Test_substitute_expr()
  let g:val = 'XXX'
  call assert_equal('XXX', substitute('yyy', 'y*', '\=g:val', ''))
  call assert_equal('XXX', substitute('yyy', 'y*', {-> g:val}, ''))
  call assert_equal("-\u1b \uf2-", substitute("-%1b %f2-", '%\(\x\x\)',
			   \ '\=nr2char("0x" . submatch(1))', 'g'))
  call assert_equal("-\u1b \uf2-", substitute("-%1b %f2-", '%\(\x\x\)',
			   \ {-> nr2char("0x" . submatch(1))}, 'g'))

  call assert_equal('231', substitute('123', '\(.\)\(.\)\(.\)',
	\ {-> submatch(2) . submatch(3) . submatch(1)}, ''))

  func Recurse()
    return substitute('yyy', 'y\(.\)y', {-> submatch(1)}, '')
  endfunc
  " recursive call works
  call assert_equal('-y-x-', substitute('xxx', 'x\(.\)x', {-> '-' . Recurse() . '-' . submatch(1) . '-'}, ''))
endfunc

func Test_invalid_submatch()
  " This was causing invalid memory access in Vim-7.4.2232 and older
  call assert_fails("call substitute('x', '.', {-> submatch(10)}, '')", 'E935:')
endfunc

func Test_substitute_expr_arg()
  call assert_equal('123456789-123456789=', substitute('123456789',
	\ '\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)',
	\ {m -> m[0] . '-' . m[1] . m[2] . m[3] . m[4] . m[5] . m[6] . m[7] . m[8] . m[9] . '='}, ''))

  call assert_equal('123456-123456=789', substitute('123456789',
	\ '\(.\)\(.\)\(.\)\(a*\)\(n*\)\(.\)\(.\)\(.\)\(x*\)',
	\ {m -> m[0] . '-' . m[1] . m[2] . m[3] . m[4] . m[5] . m[6] . m[7] . m[8] . m[9] . '='}, ''))

  call assert_equal('123456789-123456789x=', substitute('123456789',
	\ '\(.\)\(.\)\(.*\)',
	\ {m -> m[0] . '-' . m[1] . m[2] . m[3] . 'x' . m[4] . m[5] . m[6] . m[7] . m[8] . m[9] . '='}, ''))

  call assert_fails("call substitute('xxx', '.', {m -> string(add(m, 'x'))}, '')", 'E742:')
  call assert_fails("call substitute('xxx', '.', {m -> string(insert(m, 'x'))}, '')", 'E742:')
  call assert_fails("call substitute('xxx', '.', {m -> string(extend(m, ['x']))}, '')", 'E742:')
  call assert_fails("call substitute('xxx', '.', {m -> string(remove(m, 1))}, '')", 'E742:')
endfunc

func Test_function_with_funcref()
  let s:f = function('type')
  let s:fref = function(s:f)
  call assert_equal(v:t_string, s:fref('x'))
  call assert_fails("call function('s:f')", 'E700:')

  call assert_fails("call function('foo()')", 'E475:')
  call assert_fails("call function('foo()')", 'foo()')
endfunc

func Test_funcref()
  func! One()
    return 1
  endfunc
  let OneByName = function('One')
  let OneByRef = funcref('One')
  func! One()
    return 2
  endfunc
  call assert_equal(2, OneByName())
  call assert_equal(1, OneByRef())
  let OneByRef = funcref('One')
  call assert_equal(2, OneByRef())
  call assert_fails('echo funcref("{")', 'E475:')
endfunc

func Test_setmatches()
  hi def link 1 Comment
  hi def link 2 PreProc
  let set = [{"group": 1, "pattern": 2, "id": 3, "priority": 4}]
  let exp = [{"group": '1', "pattern": '2', "id": 3, "priority": 4}]
  if has('conceal')
    let set[0]['conceal'] = 5
    let exp[0]['conceal'] = '5'
  endif
  call setmatches(set)
  call assert_equal(exp, getmatches())
endfunc

func Test_empty_concatenate()
  call assert_equal('b', 'a'[4:0] . 'b')
  call assert_equal('b', 'b' . 'a'[4:0])
endfunc
