" Tests for expressions.

source check.vim
import './vim9.vim' as v9

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')
  call assert_equal(0, test_null_function() == function('min'))
  call assert_equal(1, test_null_function() == test_null_function())
  call assert_fails('eval 10 == test_unknown()', 'E685:')
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_true(has('patch-7.4.123 ')) " Traling space can be allowed.

  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'))

  call assert_false(has('patch-abc'))
  call assert_false(has('patchabc'))

  call assert_false(has('patch-8x001'))
  call assert_false(has('patch-9X0X0'))
  call assert_false(has('patch-9-0-0'))
  call assert_false(has('patch-09.0.0'))
  call assert_false(has('patch-9.00.0'))
endfunc

func Test_op_ternary()
  let lines =<< trim END
      call assert_equal('yes', 1 ? 'yes' : 'no')
      call assert_equal('no', 0 ? 'yes' : 'no')

      call assert_fails('echo [1] ? "yes" : "no"', 'E745:')
      call assert_fails('echo {} ? "yes" : "no"', 'E728:')
  END
  call v9.CheckLegacyAndVim9Success(lines)

  call assert_equal('no', 'x' ? 'yes' : 'no')
  call v9.CheckDefAndScriptFailure(["'x' ? 'yes' : 'no'"], 'E1135:')
  call assert_equal('yes', '1x' ? 'yes' : 'no')
  call v9.CheckDefAndScriptFailure(["'1x' ? 'yes' : 'no'"], 'E1135:')
endfunc

func Test_op_falsy()
  let lines =<< trim END
      call assert_equal(v:true, v:true ?? 456)
      call assert_equal(123, 123 ?? 456)
      call assert_equal('yes', 'yes' ?? 456)
      call assert_equal(0z00, 0z00 ?? 456)
      call assert_equal([1], [1] ?? 456)
      call assert_equal({'one': 1}, {'one': 1} ?? 456)
      call assert_equal(0.1, 0.1 ?? 456)

      call assert_equal(456, v:false ?? 456)
      call assert_equal(456, 0 ?? 456)
      call assert_equal(456, '' ?? 456)
      call assert_equal(456, 0z ?? 456)
      call assert_equal(456, [] ?? 456)
      call assert_equal(456, {} ?? 456)
      call assert_equal(456, 0.0 ?? 456)
  END
  call v9.CheckLegacyAndVim9Success(lines)
endfunc

func Test_dict()
  let lines =<< trim END
      VAR 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'])

      LET d[ 'b' ] = 'bbb'
      call assert_equal('bbb', d[ 'b' ])
  END
  call v9.CheckLegacyAndVim9Success(lines)

  call v9.CheckLegacyAndVim9Failure(["VAR i = has_key([], 'a')"], ['E1206:', 'E1013:', 'E1206:'])
endfunc

func Test_strgetchar()
  let lines =<< trim END
      call assert_equal(char2nr('a'), strgetchar('axb', 0))
      call assert_equal(char2nr('x'), 'axb'->strgetchar(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))
  END
  call v9.CheckLegacyAndVim9Success(lines)

  call v9.CheckLegacyAndVim9Failure(["VAR c = strgetchar([], 1)"], ['E730:', 'E1013:', 'E1174:'])
  call v9.CheckLegacyAndVim9Failure(["VAR c = strgetchar('axb', [])"], ['E745:', 'E1013:', 'E1210:'])
endfunc

func Test_strcharpart()
  let lines =<< trim END
      call assert_equal('a', strcharpart('axb', 0, 1))
      call assert_equal('x', 'axb'->strcharpart(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))

      call assert_equal('edit', "editor"[-10 : 3])
  END
  call v9.CheckLegacyAndVim9Success(lines)
endfunc

func Test_getreg_empty_list()
  let lines =<< trim END
      call assert_equal('', getreg('x'))
      call assert_equal([], getreg('x', 1, 1))
      VAR x = getreg('x', 1, 1)
      VAR y = x
      call add(x, 'foo')
      call assert_equal(['foo'], y)
  END
  call v9.CheckLegacyAndVim9Success(lines)

  call v9.CheckLegacyAndVim9Failure(['call getreg([])'], ['E730:', 'E1013:', 'E1174:'])
endfunc

func Test_loop_over_null_list()
  let lines =<< trim END
      VAR nulllist = test_null_list()
      for i in nulllist
        call assert_report('should not get here')
      endfor
  END
  call v9.CheckLegacyAndVim9Success(lines)

  let lines =<< trim END
      var nulllist = null_list
      for i in nulllist
        call assert_report('should not get here')
      endfor
  END
  call v9.CheckDefAndScriptSuccess(lines)

  let lines =<< trim END
      let nulllist = null_list
      for i in nulllist
        call assert_report('should not get here')
      endfor
  END
  call v9.CheckScriptFailure(lines, 'E121: Undefined variable: null_list')
endfunc

func Test_compare_with_null()
  let s:value = v:null
  call assert_true(s:value == v:null)
  let s:value = v:true
  call assert_false(s:value == v:null)
  let s:value = v:none
  call assert_false(s:value == v:null)
  let s:value = 0
  call assert_true(s:value == v:null)
  let s:value = 0.0
  call assert_true(s:value == v:null)
  let s:value = ''
  call assert_false(s:value == v:null)
  let s:value = 0z
  call assert_false(s:value == v:null)
  let s:value = []
  call assert_false(s:value == v:null)
  let s:value = {}
  call assert_false(s:value == v:null)
  let s:value = function('len')
  call assert_false(s:value == v:null)
  if has('job')
    let s:value = test_null_job()
    call assert_true(s:value == v:null)
    let s:value = test_null_channel()
    call assert_true(s:value == v:null)
  endif
  unlet s:value
endfunc

func Test_setreg_null_list()
  let lines =<< trim END
      call setreg('x', test_null_list())
  END
  call v9.CheckLegacyAndVim9Success(lines)
endfunc

func Test_special_char()
  " The failure is only visible using valgrind.
  call v9.CheckLegacyAndVim9Failure(['echo "\<C-">'], ['E15:', 'E1004:', 'E1004:'])
endfunc

func Test_method_with_prefix()
  let lines =<< trim END
      call assert_equal(TRUE, !range(5)->empty())
      call assert_equal(FALSE, !-3)
  END
  call v9.CheckLegacyAndVim9Success(lines)

  call assert_equal([0, 1, 2], --3->range())
  call v9.CheckDefAndScriptFailure(['eval --3->range()'], 'E15')

  call assert_equal(1, !+-+0)
  call v9.CheckDefAndScriptFailure(['eval !+-+0'], 'E15')
endfunc

func Test_option_value()
  let lines =<< trim END
      #" boolean
      set bri
      call assert_equal(TRUE, &bri)
      set nobri
      call assert_equal(FALSE, &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
  END
  call v9.CheckLegacyAndVim9Success(lines)
endfunc

func Test_printf_misc()
  let lines =<< trim END
      call assert_equal('123', printf('123'))

      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))

      call assert_equal('{', printf('%c', 123))
      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('🐍', printf('%.2S', '🐍🐍'))
      call assert_equal('', printf('%.1S', '🐍🐍'))

      call assert_equal('[    あいう]', printf('[%10.6S]', 'あいうえお'))
      call assert_equal('[  あいうえ]', printf('[%10.8S]', 'あいうえお'))
      call assert_equal('[あいうえお]', printf('[%10.10S]', 'あいうえお'))
      call assert_equal('[あいうえお]', printf('[%10.12S]', 'あいうえお'))

      call assert_equal('あいう', printf('%S', 'あいう'))
      call assert_equal('あいう', printf('%#S', 'あいう'))

      call assert_equal('あb', printf('%2S', 'あb'))
      call assert_equal('あb', printf('%.4S', 'あb'))
      call assert_equal('あ', printf('%.2S', 'あb'))
      call assert_equal(' あb', printf('%4S', 'あb'))
      call assert_equal('0あb', printf('%04S', 'あb'))
      call assert_equal('あb ', printf('%-4S', 'あb'))
      call assert_equal('あ  ', printf('%-4.2S', 'あb'))

      call assert_equal('aい', printf('%2S', 'aい'))
      call assert_equal('aい', printf('%.4S', 'aい'))
      call assert_equal('a', printf('%.2S', 'aい'))
      call assert_equal(' aい', printf('%4S', 'aい'))
      call assert_equal('0aい', printf('%04S', 'aい'))
      call assert_equal('aい ', printf('%-4S', 'aい'))
      call assert_equal('a   ', printf('%-4.2S', 'aい'))

      call assert_equal('[あいう]', printf('[%05S]', 'あいう'))
      call assert_equal('[あいう]', printf('[%06S]', 'あいう'))
      call assert_equal('[0あいう]', printf('[%07S]', 'あいう'))

      call assert_equal('[あiう]', printf('[%05S]', 'あiう'))
      call assert_equal('[0あiう]', printf('[%06S]', 'あiう'))
      call assert_equal('[00あiう]', printf('[%07S]', 'あiう'))

      call assert_equal('[0あい]', printf('[%05.4S]', 'あいう'))
      call assert_equal('[00あい]', printf('[%06.4S]', 'あいう'))
      call assert_equal('[000あい]', printf('[%07.4S]', 'あいう'))

      call assert_equal('[00あi]', printf('[%05.4S]', 'あiう'))
      call assert_equal('[000あi]', printf('[%06.4S]', 'あiう'))
      call assert_equal('[0000あi]', printf('[%07.4S]', 'あiう'))

      call assert_equal('[0あい]', printf('[%05.5S]', 'あいう'))
      call assert_equal('[00あい]', printf('[%06.5S]', 'あいう'))
      call assert_equal('[000あい]', printf('[%07.5S]', 'あいう'))

      call assert_equal('[あiう]', printf('[%05.5S]', 'あiう'))
      call assert_equal('[0あiう]', printf('[%06.5S]', 'あiう'))
      call assert_equal('[00あiう]', printf('[%07.5S]', 'あiう'))

      call assert_equal('[0000000000]', printf('[%010.0S]', 'あいう'))
      call assert_equal('[0000000000]', printf('[%010.1S]', 'あいう'))
      call assert_equal('[00000000あ]', printf('[%010.2S]', 'あいう'))
      call assert_equal('[00000000あ]', printf('[%010.3S]', 'あいう'))
      call assert_equal('[000000あい]', printf('[%010.4S]', 'あいう'))
      call assert_equal('[000000あい]', printf('[%010.5S]', 'あいう'))
      call assert_equal('[0000あいう]', printf('[%010.6S]', 'あいう'))
      call assert_equal('[0000あいう]', printf('[%010.7S]', 'あいう'))

      call assert_equal('[0000000000]', printf('[%010.1S]', 'あiう'))
      call assert_equal('[00000000あ]', printf('[%010.2S]', 'あiう'))
      call assert_equal('[0000000あi]', printf('[%010.3S]', 'あiう'))
      call assert_equal('[0000000あi]', printf('[%010.4S]', 'あiう'))
      call assert_equal('[00000あiう]', printf('[%010.5S]', 'あiう'))
      call assert_equal('[00000あiう]', printf('[%010.6S]', 'あiう'))
      call assert_equal('[00000あiう]', printf('[%010.7S]', 'あiう'))

      call assert_equal('1%', printf('%d%%', 1))
      call assert_notequal('', printf('%p', "abc"))
  END
  call v9.CheckLegacyAndVim9Success(lines)

  call v9.CheckLegacyAndVim9Failure(["call printf('123', 3)"], "E767:")
endfunc

func Test_printf_float()
  let lines =<< trim END
      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))
  END
  call v9.CheckLegacyAndVim9Success(lines)

  call v9.CheckLegacyAndVim9Failure(['echo printf("%f", "a")'], 'E807:')
endfunc

func Test_printf_errors()
  call v9.CheckLegacyAndVim9Failure(['echo printf("%d", {})'], 'E728:')
  call v9.CheckLegacyAndVim9Failure(['echo printf("%d", [])'], 'E745:')
  call v9.CheckLegacyAndVim9Failure(['echo printf("%d", 1, 2)'], 'E767:')
  call v9.CheckLegacyAndVim9Failure(['echo printf("%*d", 1)'], 'E766:')
  call v9.CheckLegacyAndVim9Failure(['echo printf("%s")'], 'E766:')
  call v9.CheckLegacyAndVim9Failure(['echo printf("%d", 1.2)'], 'E805:')
  call v9.CheckLegacyAndVim9Failure(['echo printf("%f")'], 'E766:')
endfunc

func Test_printf_64bit()
  let lines =<< trim END
      call assert_equal("123456789012345", printf('%d', 123456789012345))
  END
  call v9.CheckLegacyAndVim9Success(lines)
endfunc

func Test_printf_spec_s()
  let lines =<< trim END
      #" number
      call assert_equal("1234567890", printf('%s', 1234567890))

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

      #" float
      call assert_equal("1.23", printf('%s', 1.23))

      #" list
      VAR lvalue = [1, 'two', ['three', 4]]
      call assert_equal(string(lvalue), printf('%s', lvalue))

      #" dict
      VAR dvalue = {'key1': 'value1', 'key2': ['list', 'lvalue'], 'key3': {'dict': 'lvalue'}}
      call assert_equal(string(dvalue), printf('%s', dvalue))

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

      #" partial
      call assert_equal(string(function('printf', ['%s'])), printf('%s', function('printf', ['%s'])))
  END
  call v9.CheckLegacyAndVim9Success(lines)
endfunc

func Test_printf_spec_b()
  let lines =<< trim END
      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))
      call assert_equal("11100000100100010000110000011011101111101111001", printf('%b', 123456789012345))
      call assert_equal("1111111111111111111111111111111111111111111111111111111111111111", printf('%b', -1))
  END
  call v9.CheckLegacyAndVim9Success(lines)
endfunc

func Test_max_min_errors()
  call v9.CheckLegacyAndVim9Failure(['call max(v:true)'], ['E712:', 'E1013:', 'E1227:'])
  call v9.CheckLegacyAndVim9Failure(['call max(v:true)'], ['max()', 'E1013:', 'E1227:'])
  call v9.CheckLegacyAndVim9Failure(['call min(v:true)'], ['E712:', 'E1013:', 'E1227:'])
  call v9.CheckLegacyAndVim9Failure(['call min(v:true)'], ['min()', 'E1013:', 'E1227:'])
endfunc

func Test_function_with_funcref()
  let lines =<< trim END
      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()')
      call assert_fails("function('')", 'E129:')

      let s:Len = {s -> strlen(s)}
      call assert_equal(6, s:Len('foobar'))
      let name = string(s:Len)
      " can evaluate "function('<lambda>99')"
      call execute('let Ref = ' .. name)
      call assert_equal(4, Ref('text'))
  END
  call v9.CheckScriptSuccess(lines)

  let lines =<< trim END
      vim9script
      var F = function('type')
      var Fref = function(F)
      call assert_equal(v:t_string, Fref('x'))
      call assert_fails("call function('F')", 'E700:')

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

      var Len = (s) => strlen(s)
      call assert_equal(6, Len('foobar'))
      var name = string(Len)
      # can evaluate "function('<lambda>99')"
      call execute('var Ref = ' .. name)
      call assert_equal(4, Ref('text'))
  END
  call v9.CheckScriptSuccess(lines)
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 = 'One'->funcref()
  call assert_equal(2, OneByRef())
  call assert_fails('echo funcref("{")', 'E475:')
  let OneByRef = funcref("One", repeat(["foo"], 20))
  call assert_fails('let OneByRef = funcref("One", repeat(["foo"], 21))', 'E118:')
  call assert_fails('echo function("min") =~ function("min")', 'E694:')
  call assert_fails('echo test_null_function()->funcref()', 'E475: Invalid argument: NULL')
endfunc

" Test for calling function() and funcref() outside of a Vim script context.
func Test_function_outside_script()
  let cleanup =<< trim END
    call writefile([execute('messages')], 'Xtest.out')
    qall
  END
  call writefile(cleanup, 'Xverify.vim')
  call RunVim([], [], "-c \"echo function('s:abc')\" -S Xverify.vim")
  call assert_match('E81: Using <SID> not in a', readfile('Xtest.out')[0])
  call RunVim([], [], "-c \"echo funcref('s:abc')\" -S Xverify.vim")
  call assert_match('E81: Using <SID> not in a', readfile('Xtest.out')[0])
  call delete('Xtest.out')
  call delete('Xverify.vim')
endfunc

func Test_setmatches()
  let lines =<< trim END
      hi def link 1 Comment
      hi def link 2 PreProc
      VAR set = [{"group": 1, "pattern": 2, "id": 3, "priority": 4}]
      VAR exp = [{"group": '1', "pattern": '2', "id": 3, "priority": 4}]
      if has('conceal')
        LET set[0]['conceal'] = 5
        LET exp[0]['conceal'] = '5'
      endif
      eval set->setmatches()
      call assert_equal(exp, getmatches())
  END
  call v9.CheckLegacyAndVim9Success(lines)

  call v9.CheckLegacyAndVim9Failure(['VAR m = setmatches([], [])'], ['E745:', 'E1013:', 'E1210:'])
endfunc

func Test_empty_concatenate()
  let lines =<< trim END
      call assert_equal('b', 'a'[4 : 0] .. 'b')
      call assert_equal('b', 'b' .. 'a'[4 : 0])
  END
  call v9.CheckLegacyAndVim9Success(lines)
endfunc

func Test_broken_number()
  call v9.CheckLegacyAndVim9Failure(['VAR X = "bad"', 'echo 1X'], 'E15:')
  call v9.CheckLegacyAndVim9Failure(['VAR X = "bad"', 'echo 0b1X'], 'E15:')
  call v9.CheckLegacyAndVim9Failure(['echo 0b12'], 'E15:')
  call v9.CheckLegacyAndVim9Failure(['VAR X = "bad"', 'echo 0x1X'], 'E15:')
  call v9.CheckLegacyAndVim9Failure(['VAR X = "bad"', 'echo 011X'], 'E15:')

  call v9.CheckLegacyAndVim9Success(['call assert_equal(2, str2nr("2a"))'])

  call v9.CheckLegacyAndVim9Failure(['inoremap <Char-0b1z> b'], 'E474:')
endfunc

func Test_eval_after_if()
  let s:val = ''
  func SetVal(x)
    let s:val ..= a:x
  endfunc
  if 0 | eval SetVal('a') | endif | call SetVal('b')
  call assert_equal('b', s:val)
endfunc

" Test for command-line completion of expressions
func Test_expr_completion()
  CheckFeature cmdline_compl
  for cmd in [
	\ 'let a = ',
	\ 'const a = ',
	\ 'if',
	\ 'elseif',
	\ 'while',
	\ 'for',
	\ 'echo',
	\ 'echon',
	\ 'execute',
	\ 'echomsg',
	\ 'echoerr',
	\ 'call',
	\ 'return',
	\ 'cexpr',
	\ 'caddexpr',
	\ 'cgetexpr',
	\ 'lexpr',
	\ 'laddexpr',
	\ 'lgetexpr']
    call feedkeys(":" . cmd . " getl\<Tab>\<Home>\"\<CR>", 'xt')
    call assert_equal('"' . cmd . ' getline(', getreg(':'))
  endfor

  " completion for the expression register
  call feedkeys(":\"\<C-R>=float2\t\"\<C-B>\"\<CR>", 'xt')
  call assert_equal('"float2nr("', @=)

  " completion for window local variables
  let w:wvar1 = 10
  let w:wvar2 = 10
  call feedkeys(":echo w:wvar\<C-A>\<C-B>\"\<CR>", 'xt')
  call assert_equal('"echo w:wvar1 w:wvar2', @:)
  unlet w:wvar1 w:wvar2

  " completion for tab local variables
  let t:tvar1 = 10
  let t:tvar2 = 10
  call feedkeys(":echo t:tvar\<C-A>\<C-B>\"\<CR>", 'xt')
  call assert_equal('"echo t:tvar1 t:tvar2', @:)
  unlet t:tvar1 t:tvar2

  " completion for variables
  let g:tvar1 = 1
  let g:tvar2 = 2
  call feedkeys(":let g:tv\<C-A>\<C-B>\"\<CR>", 'xt')
  call assert_equal('"let g:tvar1 g:tvar2', @:)
  " completion for variables after a ||
  call feedkeys(":echo 1 || g:tv\<C-A>\<C-B>\"\<CR>", 'xt')
  call assert_equal('"echo 1 || g:tvar1 g:tvar2', @:)

  " completion for options
  call feedkeys(":echo &compat\<C-A>\<C-B>\"\<CR>", 'xt')
  call assert_equal('"echo &compatible', @:)
  call feedkeys(":echo 1 && &compat\<C-A>\<C-B>\"\<CR>", 'xt')
  call assert_equal('"echo 1 && &compatible', @:)
  call feedkeys(":echo &g:equala\<C-A>\<C-B>\"\<CR>", 'xt')
  call assert_equal('"echo &g:equalalways', @:)

  " completion for string
  call feedkeys(":echo \"Hello\\ World\"\<C-A>\<C-B>\"\<CR>", 'xt')
  call assert_equal("\"echo \"Hello\\ World\"\<C-A>", @:)
  call feedkeys(":echo 'Hello World'\<C-A>\<C-B>\"\<CR>", 'xt')
  call assert_equal("\"echo 'Hello World'\<C-A>", @:)

  " completion for command after a |
  call feedkeys(":echo 'Hello' | cwin\<C-A>\<C-B>\"\<CR>", 'xt')
  call assert_equal("\"echo 'Hello' | cwindow", @:)

  " completion for environment variable
  let $X_VIM_TEST_COMPLETE_ENV = 'foo'
  call feedkeys(":let $X_VIM_TEST_COMPLETE_E\<C-A>\<C-B>\"\<CR>", 'tx')
  call assert_match('"let $X_VIM_TEST_COMPLETE_ENV', @:)
  unlet $X_VIM_TEST_COMPLETE_ENV
endfunc

" Test for errors in expression evaluation
func Test_expr_eval_error()
  call v9.CheckLegacyAndVim9Failure(["VAR i = 'abc' .. []"], ['E730:', 'E1105:', 'E730:'])
  call v9.CheckLegacyAndVim9Failure(["VAR l = [] + 10"], ['E745:', 'E1051:', 'E745'])
  call v9.CheckLegacyAndVim9Failure(["VAR v = 10 + []"], ['E745:', 'E1051:', 'E745:'])
  call v9.CheckLegacyAndVim9Failure(["VAR v = 10 / []"], ['E745:', 'E1036:', 'E745:'])
  call v9.CheckLegacyAndVim9Failure(["VAR v = -{}"], ['E728:', 'E1012:', 'E728:'])
endfunc

func Test_white_in_function_call()
  let lines =<< trim END
      VAR text = substitute ( 'some text' , 't' , 'T' , 'g' )
      call assert_equal('some TexT', text)
  END
  call v9.CheckTransLegacySuccess(lines)

  let lines =<< trim END
      var text = substitute ( 'some text' , 't' , 'T' , 'g' )
      call assert_equal('some TexT', text)
  END
  call v9.CheckDefAndScriptFailure(lines, ['E1001:', 'E121:'])
endfunc

" Test for float value comparison
func Test_float_compare()
  let lines =<< trim END
      call assert_true(1.2 == 1.2)
      call assert_true(1.0 != 1.2)
      call assert_true(1.2 > 1.0)
      call assert_true(1.2 >= 1.2)
      call assert_true(1.0 < 1.2)
      call assert_true(1.2 <= 1.2)
      call assert_true(+0.0 == -0.0)
      #" two NaNs (not a number) are not equal
      call assert_true(sqrt(-4.01) != (0.0 / 0.0))
      #" two inf (infinity) are equal
      call assert_true((1.0 / 0) == (2.0 / 0))
      #" two -inf (infinity) are equal
      call assert_true(-(1.0 / 0) == -(2.0 / 0))
      #" +infinity != -infinity
      call assert_true((1.0 / 0) != -(2.0 / 0))
  END
  call v9.CheckLegacyAndVim9Success(lines)
endfunc

func Test_string_interp()
  let lines =<< trim END
    call assert_equal('', $"")
    call assert_equal('foobar', $"foobar")
    #" Escaping rules.
    call assert_equal('"foo"{bar}', $"\"foo\"{{bar}}")
    call assert_equal('"foo"{bar}', $'"foo"{{bar}}')
    call assert_equal('foobar', $"{"foo"}" .. $'{'bar'}')
    #" Whitespace before/after the expression.
    call assert_equal('3', $"{ 1 + 2 }")
    #" String conversion.
    call assert_equal('hello from ' .. v:version, $"hello from {v:version}")
    call assert_equal('hello from ' .. v:version, $'hello from {v:version}')
    #" Paper over a small difference between VimScript behaviour.
    call assert_equal(string(v:true), $"{v:true}")
    call assert_equal('(1+1=2)', $"(1+1={1 + 1})")
    #" Hex-escaped opening brace: char2nr('{') == 0x7b
    call assert_equal('esc123ape', $"esc{123}ape")
    call assert_equal('me{}me', $"me{"\x7b"}\x7dme")
    VAR var1 = "sun"
    VAR var2 = "shine"
    call assert_equal('sunshine', $"{var1}{var2}")
    call assert_equal('sunsunsun', $"{var1->repeat(3)}")
    #" Multibyte strings.
    call assert_equal('say ハロー・ワールド', $"say {'ハロー・ワールド'}")
    #" Nested.
    call assert_equal('foobarbaz', $"foo{$"{'bar'}"}baz")
    #" Do not evaluate blocks when the expr is skipped.
    VAR tmp = 0
    if v:false
      echo "${ LET tmp += 1 }"
    endif
    call assert_equal(0, tmp)

    #" Stray closing brace.
    call assert_fails('echo $"moo}"', 'E1278:')
    #" Undefined variable in expansion.
    call assert_fails('echo $"{moo}"', 'E121:')
    #" Empty blocks are rejected.
    call assert_fails('echo $"{}"', 'E15:')
    call assert_fails('echo $"{   }"', 'E15:')
  END
  call v9.CheckLegacyAndVim9Success(lines)

  let lines =<< trim END
    call assert_equal('5', $"{({x -> x + 1})(4)}")
  END
  call v9.CheckLegacySuccess(lines)

  let lines =<< trim END
    call assert_equal('5', $"{((x) => x + 1)(4)}")
    call assert_fails('echo $"{ # foo }"', 'E1279:')
  END
  call v9.CheckDefAndScriptSuccess(lines)
endfunc

" Test for bitwise left and right shift (<< and >>)
func Test_bitwise_shift()
  let lines =<< trim END
    call assert_equal(16, 1 << 4)
    call assert_equal(2, 16 >> 3)
    call assert_equal(0, 0 << 2)
    call assert_equal(0, 0 >> 4)
    call assert_equal(3, 3 << 0)
    call assert_equal(3, 3 >> 0)
    call assert_equal(0, 0 >> 4)
    call assert_equal(0, 999999 >> 100)
    call assert_equal(0, 999999 << 100)
    call assert_equal(-1, -1 >> 0)
    call assert_equal(-1, -1 << 0)
    VAR a = 8
    VAR b = 2
    call assert_equal(2, a >> b)
    call assert_equal(32, a << b)
    #" operator precedence
    call assert_equal(48, 1 + 2 << 5 - 1)
    call assert_equal(3, 8 + 4 >> 4 - 2)
    call assert_true(1 << 2 < 1 << 3)
    call assert_true(1 << 4 > 1 << 3)
    VAR val = 0
    for i in range(0, v:numbersize - 2)
        LET val = or(val, 1 << i)
    endfor
    call assert_equal(v:numbermax, val)
    LET val = v:numbermax
    for i in range(0, v:numbersize - 2)
        LET val = and(val, invert(1 << i))
    endfor
    #" -1 has all the bits set
    call assert_equal(-2, -1 << 1)
    call assert_equal(-4, -1 << 2)
    call assert_equal(-8, -1 << 3)
    if v:numbersize == 64
      call assert_equal(0x7fffffffffffffff, -1 >> 1)
      call assert_equal(0x3fffffffffffffff, -1 >> 2)
      call assert_equal(0x1fffffffffffffff, -1 >> 3)
    endif
    call assert_equal(0, val)
    #" multiple operators
    call assert_equal(16, 1 << 2 << 2)
    call assert_equal(4, 64 >> 2 >> 2)
    call assert_true(1 << 2 << 2 == 256 >> 2 >> 2)
  END
  call v9.CheckLegacyAndVim9Success(lines)

  call v9.CheckLegacyAndVim9Failure(['VAR v = 2 << -1'], ['E1283:', 'E1283:', 'E1283:'])
  call v9.CheckLegacyAndVim9Failure(['VAR a = 2', 'VAR b = -1', 'VAR v = a << b'], ['E1283:', 'E1283:', 'E1283:'])
  call v9.CheckLegacyAndVim9Failure(['VAR v = "8" >> 2'], ['E1282:', 'E1282:', 'E1282:'])
  call v9.CheckLegacyAndVim9Failure(['VAR v = 1 << "2"'], ['E1282:', 'E1282:', 'E1282:'])
  call v9.CheckLegacyAndVim9Failure(['VAR a = "8"', 'VAR b = 2', 'VAR v = a << b'], ['E1282:', 'E1012:', 'E1282:'])
  call v9.CheckLegacyAndVim9Failure(['VAR a = 8', 'VAR b = "2"', 'VAR v = a >> b'], ['E1282:', 'E1012:', 'E1282:'])
  call v9.CheckLegacyAndVim9Failure(['VAR v = ![] << 1'], ['E745:', 'E1012:', 'E1282:'])
  call v9.CheckLegacyAndVim9Failure(['VAR v = 1 << ![]'], ['E745:', 'E1012:', 'E1282:'])
  call v9.CheckLegacyAndVim9Failure(['VAR v = ![] >> 1'], ['E745:', 'E1012:', 'E1282:'])
  call v9.CheckLegacyAndVim9Failure(['VAR v = 1 >> ![]'], ['E745:', 'E1012:', 'E1282:'])
  call v9.CheckDefAndScriptFailure(['echo 1<< 2'], ['E1004:', 'E1004:'])
  call v9.CheckDefAndScriptFailure(['echo 1 <<2'], ['E1004:', 'E1004:'])
  call v9.CheckDefAndScriptFailure(['echo 1>> 2'], ['E1004:', 'E1004:'])
  call v9.CheckDefAndScriptFailure(['echo 1 >>2'], ['E1004:', 'E1004:'])

  let lines =<< trim END
     var a = 1
             <<
             4
     assert_equal(16, a)
  END
  call v9.CheckDefAndScriptSuccess(lines)
endfunc

" vim: shiftwidth=2 sts=2 expandtab
