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