xref: /vim-8.2.3635/src/testdir/test_expr.vim (revision 58de0e2d)
1f0e86a0dSBram Moolenaar" Tests for expressions.
2f0e86a0dSBram Moolenaar
3f0e86a0dSBram Moolenaarfunc Test_equal()
4f0e86a0dSBram Moolenaar  let base = {}
5f0e86a0dSBram Moolenaar  func base.method()
6f0e86a0dSBram Moolenaar    return 1
7f0e86a0dSBram Moolenaar  endfunc
8f0e86a0dSBram Moolenaar  func base.other() dict
9f0e86a0dSBram Moolenaar    return 1
10f0e86a0dSBram Moolenaar  endfunc
11f0e86a0dSBram Moolenaar  let instance = copy(base)
12f0e86a0dSBram Moolenaar  call assert_true(base.method == instance.method)
13f0e86a0dSBram Moolenaar  call assert_true([base.method] == [instance.method])
14f0e86a0dSBram Moolenaar  call assert_true(base.other == instance.other)
15f0e86a0dSBram Moolenaar  call assert_true([base.other] == [instance.other])
16f0e86a0dSBram Moolenaar
17f0e86a0dSBram Moolenaar  call assert_false(base.method == base.other)
18f0e86a0dSBram Moolenaar  call assert_false([base.method] == [base.other])
19f0e86a0dSBram Moolenaar  call assert_false(base.method == instance.other)
20f0e86a0dSBram Moolenaar  call assert_false([base.method] == [instance.other])
21f0e86a0dSBram Moolenaar
22f0e86a0dSBram Moolenaar  call assert_fails('echo base.method > instance.method')
23f0e86a0dSBram Moolenaarendfunc
24819821c5SBram Moolenaar
25819821c5SBram Moolenaarfunc Test_version()
26819821c5SBram Moolenaar  call assert_true(has('patch-7.4.001'))
27819821c5SBram Moolenaar  call assert_true(has('patch-7.4.01'))
28819821c5SBram Moolenaar  call assert_true(has('patch-7.4.1'))
29819821c5SBram Moolenaar  call assert_true(has('patch-6.9.999'))
30819821c5SBram Moolenaar  call assert_true(has('patch-7.1.999'))
31819821c5SBram Moolenaar  call assert_true(has('patch-7.4.123'))
32819821c5SBram Moolenaar
33819821c5SBram Moolenaar  call assert_false(has('patch-7'))
34819821c5SBram Moolenaar  call assert_false(has('patch-7.4'))
35819821c5SBram Moolenaar  call assert_false(has('patch-7.4.'))
36819821c5SBram Moolenaar  call assert_false(has('patch-9.1.0'))
37819821c5SBram Moolenaar  call assert_false(has('patch-9.9.1'))
38819821c5SBram Moolenaarendfunc
390921ecffSBram Moolenaar
400921ecffSBram Moolenaarfunc Test_dict()
410921ecffSBram Moolenaar  let d = {'': 'empty', 'a': 'a', 0: 'zero'}
420921ecffSBram Moolenaar  call assert_equal('empty', d[''])
430921ecffSBram Moolenaar  call assert_equal('a', d['a'])
440921ecffSBram Moolenaar  call assert_equal('zero', d[0])
450921ecffSBram Moolenaar  call assert_true(has_key(d, ''))
460921ecffSBram Moolenaar  call assert_true(has_key(d, 'a'))
470921ecffSBram Moolenaar
480921ecffSBram Moolenaar  let d[''] = 'none'
490921ecffSBram Moolenaar  let d['a'] = 'aaa'
500921ecffSBram Moolenaar  call assert_equal('none', d[''])
510921ecffSBram Moolenaar  call assert_equal('aaa', d['a'])
520921ecffSBram Moolenaarendfunc
53*58de0e2dSBram Moolenaar
54*58de0e2dSBram Moolenaarfunc Test_strgetchar()
55*58de0e2dSBram Moolenaar  call assert_equal(char2nr('a'), strgetchar('axb', 0))
56*58de0e2dSBram Moolenaar  call assert_equal(char2nr('x'), strgetchar('axb', 1))
57*58de0e2dSBram Moolenaar  call assert_equal(char2nr('b'), strgetchar('axb', 2))
58*58de0e2dSBram Moolenaar
59*58de0e2dSBram Moolenaar  call assert_equal(-1, strgetchar('axb', -1))
60*58de0e2dSBram Moolenaar  call assert_equal(-1, strgetchar('axb', 3))
61*58de0e2dSBram Moolenaar  call assert_equal(-1, strgetchar('', 0))
62*58de0e2dSBram Moolenaar
63*58de0e2dSBram Moolenaar  if !has('multi_byte')
64*58de0e2dSBram Moolenaar    return
65*58de0e2dSBram Moolenaar  endif
66*58de0e2dSBram Moolenaar
67*58de0e2dSBram Moolenaar  call assert_equal(char2nr('á'), strgetchar('áxb', 0))
68*58de0e2dSBram Moolenaar  call assert_equal(char2nr('x'), strgetchar('áxb', 1))
69*58de0e2dSBram Moolenaar
70*58de0e2dSBram Moolenaar  call assert_equal(char2nr('a'), strgetchar('àxb', 0))
71*58de0e2dSBram Moolenaar  call assert_equal(char2nr('̀'), strgetchar('àxb', 1))
72*58de0e2dSBram Moolenaar  call assert_equal(char2nr('x'), strgetchar('àxb', 2))
73*58de0e2dSBram Moolenaarendfunc
74*58de0e2dSBram Moolenaar
75*58de0e2dSBram Moolenaarfunc Test_strcharpart()
76*58de0e2dSBram Moolenaar  call assert_equal('a', strcharpart('axb', 0, 1))
77*58de0e2dSBram Moolenaar  call assert_equal('x', strcharpart('axb', 1, 1))
78*58de0e2dSBram Moolenaar  call assert_equal('b', strcharpart('axb', 2, 1))
79*58de0e2dSBram Moolenaar  call assert_equal('xb', strcharpart('axb', 1))
80*58de0e2dSBram Moolenaar
81*58de0e2dSBram Moolenaar  call assert_equal('', strcharpart('axb', 1, 0))
82*58de0e2dSBram Moolenaar  call assert_equal('', strcharpart('axb', 1, -1))
83*58de0e2dSBram Moolenaar  call assert_equal('', strcharpart('axb', -1, 1))
84*58de0e2dSBram Moolenaar  call assert_equal('', strcharpart('axb', -2, 2))
85*58de0e2dSBram Moolenaar
86*58de0e2dSBram Moolenaar  call assert_equal('a', strcharpart('axb', -1, 2))
87*58de0e2dSBram Moolenaar
88*58de0e2dSBram Moolenaar  if !has('multi_byte')
89*58de0e2dSBram Moolenaar    return
90*58de0e2dSBram Moolenaar  endif
91*58de0e2dSBram Moolenaar
92*58de0e2dSBram Moolenaar  call assert_equal('áxb', strcharpart('áxb', 0))
93*58de0e2dSBram Moolenaar  call assert_equal('á', strcharpart('áxb', 0, 1))
94*58de0e2dSBram Moolenaar  call assert_equal('x', strcharpart('áxb', 1, 1))
95*58de0e2dSBram Moolenaar
96*58de0e2dSBram Moolenaar  call assert_equal('a', strcharpart('àxb', 0, 1))
97*58de0e2dSBram Moolenaar  call assert_equal('̀', strcharpart('àxb', 1, 1))
98*58de0e2dSBram Moolenaar  call assert_equal('x', strcharpart('àxb', 2, 1))
99*58de0e2dSBram Moolenaarendfunc
100