xref: /vim-8.2.3635/src/testdir/test_perl.vim (revision e9b892eb)
1" Tests for Perl interface
2
3if !has('perl')
4  finish
5end
6
7set nocp viminfo+=nviminfo
8
9fu <SID>catch_peval(expr)
10  try
11    call perleval(a:expr)
12  catch
13    return v:exception
14  endtry
15  call assert_true(0, 'no exception for `perleval("'.a:expr.'")`')
16  return ''
17endf
18
19function Test_perleval()
20  call assert_false(perleval('undef'))
21
22  " scalar
23  call assert_equal(0, perleval('0'))
24  call assert_equal(2, perleval('2'))
25  call assert_equal(-2, perleval('-2'))
26  if has('float')
27    call assert_equal(2.5, perleval('2.5'))
28  else
29    call assert_equal(2, perleval('2.5'))
30  end
31
32  sandbox call assert_equal(2, perleval('2'))
33
34  call assert_equal('abc', perleval('"abc"'))
35  call assert_equal("abc\ndef", perleval('"abc\0def"'))
36
37  " ref
38  call assert_equal([], perleval('[]'))
39  call assert_equal(['word', 42, [42],{}], perleval('["word", 42, [42], {}]'))
40
41  call assert_equal({}, perleval('{}'))
42  call assert_equal({'foo': 'bar'}, perleval('{foo => "bar"}'))
43
44  perl our %h; our @a;
45  let a = perleval('[\(%h, %h, @a, @a)]')
46  call assert_true((a[0] is a[1]))
47  call assert_true((a[2] is a[3]))
48  perl undef %h; undef @a;
49
50  call assert_true(<SID>catch_peval('{"" , 0}') =~ 'Malformed key Dictionary')
51  call assert_true(<SID>catch_peval('{"\0" , 0}') =~ 'Malformed key Dictionary')
52  call assert_true(<SID>catch_peval('{"foo\0bar" , 0}') =~ 'Malformed key Dictionary')
53
54  call assert_equal('*VIM', perleval('"*VIM"'))
55  call assert_true(perleval('\\0') =~ 'SCALAR(0x\x\+)')
56endf
57
58function Test_perldo()
59  sp __TEST__
60  exe 'read ' g:testname
61  perldo s/perl/vieux_chameau/g
62  1
63  call assert_false(search('\Cperl'))
64  bw!
65endf
66
67function Test_VIM_package()
68  perl VIM::DoCommand('let l:var = "foo"')
69  call assert_equal(l:var, 'foo')
70
71  set noet
72  perl VIM::SetOption('et')
73  call assert_true(&et)
74endf
75