Mercurial > vim
comparison src/testdir/test_perl.vim @ 7651:c7575b07de98 v7.4.1125
commit https://github.com/vim/vim/commit/e9b892ebcd8596bf813793a1eed5a460a9495a28
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jan 17 21:15:58 2016 +0100
patch 7.4.1125
Problem: There is no perleval().
Solution: Add perleval(). (Damien)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 17 Jan 2016 21:30:04 +0100 |
parents | |
children | 94f34dc2f254 |
comparison
equal
deleted
inserted
replaced
7650:fbc4cabe6704 | 7651:c7575b07de98 |
---|---|
1 " Tests for Perl interface | |
2 | |
3 if !has('perl') | |
4 finish | |
5 end | |
6 | |
7 set nocp viminfo+=nviminfo | |
8 | |
9 fu <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 '' | |
17 endf | |
18 | |
19 function 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\+)') | |
56 endf | |
57 | |
58 function 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! | |
65 endf | |
66 | |
67 function 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) | |
74 endf |