185babd6dSBram Moolenaar" Tests for ruby interface 285babd6dSBram Moolenaar 385babd6dSBram Moolenaarif !has('ruby') 485babd6dSBram Moolenaar finish 585babd6dSBram Moolenaarend 685babd6dSBram Moolenaar 7*edd6aacbSBram Moolenaar" Helper function as there is no builtin rubyeval() function similar 8*edd6aacbSBram Moolenaar" to perleval, luaevel() or pyeval(). 9*edd6aacbSBram Moolenaarfunc RubyEval(ruby_expr) 10*edd6aacbSBram Moolenaar let s = split(execute('ruby print ' . a:ruby_expr), "\n") 11*edd6aacbSBram Moolenaar return (len(s) == 0) ? '' : s[-1] 12*edd6aacbSBram Moolenaarendfunc 13*edd6aacbSBram Moolenaar 1485babd6dSBram Moolenaarfunc Test_ruby_change_buffer() 1585babd6dSBram Moolenaar call setline(line('$'), ['1 line 1']) 1685babd6dSBram Moolenaar ruby Vim.command("normal /^1\n") 1785babd6dSBram Moolenaar ruby $curbuf.line = "1 changed line 1" 1885babd6dSBram Moolenaar call assert_equal('1 changed line 1', getline('$')) 1985babd6dSBram Moolenaarendfunc 2085babd6dSBram Moolenaar 21c593fee0SBram Moolenaarfunc Test_rubydo() 22c593fee0SBram Moolenaar " Check deleting lines does not trigger ml_get error. 23c593fee0SBram Moolenaar new 24c593fee0SBram Moolenaar call setline(1, ['one', 'two', 'three']) 25c593fee0SBram Moolenaar rubydo Vim.command("%d_") 26c593fee0SBram Moolenaar bwipe! 27c593fee0SBram Moolenaar 28c593fee0SBram Moolenaar " Check switching to another buffer does not trigger ml_get error. 29c593fee0SBram Moolenaar new 30c593fee0SBram Moolenaar let wincount = winnr('$') 31c593fee0SBram Moolenaar call setline(1, ['one', 'two', 'three']) 32c593fee0SBram Moolenaar rubydo Vim.command("new") 33c593fee0SBram Moolenaar call assert_equal(wincount + 1, winnr('$')) 34*edd6aacbSBram Moolenaar %bwipe! 35c593fee0SBram Moolenaarendfunc 3637badc89SBram Moolenaar 3737badc89SBram Moolenaarfunc Test_rubyfile() 3837badc89SBram Moolenaar " Check :rubyfile does not SEGV with Ruby level exception but just fails 3937badc89SBram Moolenaar let tempfile = tempname() . '.rb' 4037badc89SBram Moolenaar call writefile(['raise "vim!"'], tempfile) 4137badc89SBram Moolenaar call assert_fails('rubyfile ' . tempfile) 4237badc89SBram Moolenaar call delete(tempfile) 4337badc89SBram Moolenaarendfunc 4453901442SBram Moolenaar 4553901442SBram Moolenaarfunc Test_set_cursor() 4653901442SBram Moolenaar " Check that setting the cursor position works. 4753901442SBram Moolenaar new 4853901442SBram Moolenaar call setline(1, ['first line', 'second line']) 4953901442SBram Moolenaar normal gg 5053901442SBram Moolenaar rubydo $curwin.cursor = [1, 5] 5153901442SBram Moolenaar call assert_equal([1, 6], [line('.'), col('.')]) 52*edd6aacbSBram Moolenaar call assert_equal('[1, 5]', RubyEval('$curwin.cursor')) 5353901442SBram Moolenaar 5453901442SBram Moolenaar " Check that movement after setting cursor position keeps current column. 5553901442SBram Moolenaar normal j 5653901442SBram Moolenaar call assert_equal([2, 6], [line('.'), col('.')]) 57*edd6aacbSBram Moolenaar call assert_equal('[2, 5]', RubyEval('$curwin.cursor')) 58*edd6aacbSBram Moolenaar 59*edd6aacbSBram Moolenaar call assert_fails('ruby $curwin.cursor = [1]', 60*edd6aacbSBram Moolenaar \ 'ArgumentError: array length must be 2') 61*edd6aacbSBram Moolenaar bwipe! 62*edd6aacbSBram Moolenaarendfunc 63*edd6aacbSBram Moolenaar 64*edd6aacbSBram Moolenaar" Test buffer.count and buffer.length (number of lines in buffer) 65*edd6aacbSBram Moolenaarfunc Test_buffer_count() 66*edd6aacbSBram Moolenaar new 67*edd6aacbSBram Moolenaar call setline(1, ['one', 'two', 'three']) 68*edd6aacbSBram Moolenaar call assert_equal('3', RubyEval('$curbuf.count')) 69*edd6aacbSBram Moolenaar call assert_equal('3', RubyEval('$curbuf.length')) 70*edd6aacbSBram Moolenaar bwipe! 71*edd6aacbSBram Moolenaarendfunc 72*edd6aacbSBram Moolenaar 73*edd6aacbSBram Moolenaar" Test buffer.name (buffer name) 74*edd6aacbSBram Moolenaarfunc Test_buffer_name() 75*edd6aacbSBram Moolenaar new Xfoo 76*edd6aacbSBram Moolenaar call assert_equal(expand('%:p'), RubyEval('$curbuf.name')) 77*edd6aacbSBram Moolenaar bwipe 78*edd6aacbSBram Moolenaar call assert_equal('', RubyEval('$curbuf.name')) 79*edd6aacbSBram Moolenaarendfunc 80*edd6aacbSBram Moolenaar 81*edd6aacbSBram Moolenaar" Test buffer.number (number of the buffer). 82*edd6aacbSBram Moolenaarfunc Test_buffer_number() 83*edd6aacbSBram Moolenaar new 84*edd6aacbSBram Moolenaar call assert_equal(string(bufnr('%')), RubyEval('$curbuf.number')) 85*edd6aacbSBram Moolenaar new 86*edd6aacbSBram Moolenaar call assert_equal(string(bufnr('%')), RubyEval('$curbuf.number')) 87*edd6aacbSBram Moolenaar 88*edd6aacbSBram Moolenaar %bwipe 89*edd6aacbSBram Moolenaarendfunc 90*edd6aacbSBram Moolenaar 91*edd6aacbSBram Moolenaar" Test buffer.delete({n}) (delete line {n}) 92*edd6aacbSBram Moolenaarfunc Test_buffer_delete() 93*edd6aacbSBram Moolenaar new 94*edd6aacbSBram Moolenaar call setline(1, ['one', 'two', 'three']) 95*edd6aacbSBram Moolenaar ruby $curbuf.delete(2) 96*edd6aacbSBram Moolenaar call assert_equal(['one', 'three'], getline(1, '$')) 97*edd6aacbSBram Moolenaar 98*edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf.delete(0)', 'IndexError: line number 0 out of range') 99*edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf.delete(3)', 'IndexError: line number 3 out of range') 100*edd6aacbSBram Moolenaar 101*edd6aacbSBram Moolenaar bwipe! 102*edd6aacbSBram Moolenaarendfunc 103*edd6aacbSBram Moolenaar 104*edd6aacbSBram Moolenaar" Test buffer.append({str}, str) (append line {str} after line {n}) 105*edd6aacbSBram Moolenaarfunc Test_buffer_append() 106*edd6aacbSBram Moolenaar new 107*edd6aacbSBram Moolenaar ruby $curbuf.append(0, 'one') 108*edd6aacbSBram Moolenaar ruby $curbuf.append(1, 'three') 109*edd6aacbSBram Moolenaar ruby $curbuf.append(1, 'two') 110*edd6aacbSBram Moolenaar ruby $curbuf.append(4, 'four') 111*edd6aacbSBram Moolenaar 112*edd6aacbSBram Moolenaar call assert_equal(['one', 'two', 'three', '', 'four'], getline(1, '$')) 113*edd6aacbSBram Moolenaar 114*edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf.append(-1, "x")', 115*edd6aacbSBram Moolenaar \ 'IndexError: line number -1 out of range') 116*edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf.append(6, "x")', 117*edd6aacbSBram Moolenaar \ 'IndexError: line number 6 out of range') 118*edd6aacbSBram Moolenaar 119*edd6aacbSBram Moolenaar bwipe! 120*edd6aacbSBram Moolenaarendfunc 121*edd6aacbSBram Moolenaar 122*edd6aacbSBram Moolenaar" Test buffer.line (get or set the current line) 123*edd6aacbSBram Moolenaarfunc Test_buffer_line() 124*edd6aacbSBram Moolenaar new 125*edd6aacbSBram Moolenaar call setline(1, ['one', 'two', 'three']) 126*edd6aacbSBram Moolenaar 2 127*edd6aacbSBram Moolenaar call assert_equal('two', RubyEval('$curbuf.line')) 128*edd6aacbSBram Moolenaar 129*edd6aacbSBram Moolenaar ruby $curbuf.line = 'TWO' 130*edd6aacbSBram Moolenaar call assert_equal(['one', 'TWO', 'three'], getline(1, '$')) 131*edd6aacbSBram Moolenaar 132*edd6aacbSBram Moolenaar bwipe! 133*edd6aacbSBram Moolenaarendfunc 134*edd6aacbSBram Moolenaar 135*edd6aacbSBram Moolenaar" Test buffer.line_number (get current line number) 136*edd6aacbSBram Moolenaarfunc Test_buffer_line_number() 137*edd6aacbSBram Moolenaar new 138*edd6aacbSBram Moolenaar call setline(1, ['one', 'two', 'three']) 139*edd6aacbSBram Moolenaar 2 140*edd6aacbSBram Moolenaar call assert_equal('2', RubyEval('$curbuf.line_number')) 141*edd6aacbSBram Moolenaar 142*edd6aacbSBram Moolenaar bwipe! 143*edd6aacbSBram Moolenaarendfunc 144*edd6aacbSBram Moolenaar 145*edd6aacbSBram Moolenaarfunc Test_buffer_get() 146*edd6aacbSBram Moolenaar new 147*edd6aacbSBram Moolenaar call setline(1, ['one', 'two']) 148*edd6aacbSBram Moolenaar call assert_equal('one', RubyEval('$curbuf[1]')) 149*edd6aacbSBram Moolenaar call assert_equal('two', RubyEval('$curbuf[2]')) 150*edd6aacbSBram Moolenaar 151*edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf[0]', 152*edd6aacbSBram Moolenaar \ 'IndexError: line number 0 out of range') 153*edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf[3]', 154*edd6aacbSBram Moolenaar \ 'IndexError: line number 3 out of range') 155*edd6aacbSBram Moolenaar 156*edd6aacbSBram Moolenaar bwipe! 157*edd6aacbSBram Moolenaarendfunc 158*edd6aacbSBram Moolenaar 159*edd6aacbSBram Moolenaarfunc Test_buffer_set() 160*edd6aacbSBram Moolenaar new 161*edd6aacbSBram Moolenaar call setline(1, ['one', 'two']) 162*edd6aacbSBram Moolenaar ruby $curbuf[2] = 'TWO' 163*edd6aacbSBram Moolenaar ruby $curbuf[1] = 'ONE' 164*edd6aacbSBram Moolenaar 165*edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf[0] = "ZERO"', 166*edd6aacbSBram Moolenaar \ 'IndexError: line number 0 out of range') 167*edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf[3] = "THREE"', 168*edd6aacbSBram Moolenaar \ 'IndexError: line number 3 out of range') 169*edd6aacbSBram Moolenaar bwipe! 170*edd6aacbSBram Moolenaarendfunc 171*edd6aacbSBram Moolenaar 172*edd6aacbSBram Moolenaar" Test window.width (get or set window height). 173*edd6aacbSBram Moolenaarfunc Test_window_height() 174*edd6aacbSBram Moolenaar new 175*edd6aacbSBram Moolenaar 176*edd6aacbSBram Moolenaar " Test setting window height 177*edd6aacbSBram Moolenaar ruby $curwin.height = 2 178*edd6aacbSBram Moolenaar call assert_equal(2, winheight(0)) 179*edd6aacbSBram Moolenaar 180*edd6aacbSBram Moolenaar " Test getting window height 181*edd6aacbSBram Moolenaar call assert_equal('2', RubyEval('$curwin.height')) 182*edd6aacbSBram Moolenaar 183*edd6aacbSBram Moolenaar bwipe 184*edd6aacbSBram Moolenaarendfunc 185*edd6aacbSBram Moolenaar 186*edd6aacbSBram Moolenaar" Test window.width (get or set window width). 187*edd6aacbSBram Moolenaarfunc Test_window_width() 188*edd6aacbSBram Moolenaar vnew 189*edd6aacbSBram Moolenaar 190*edd6aacbSBram Moolenaar " Test setting window width 191*edd6aacbSBram Moolenaar ruby $curwin.width = 2 192*edd6aacbSBram Moolenaar call assert_equal(2, winwidth(0)) 193*edd6aacbSBram Moolenaar 194*edd6aacbSBram Moolenaar " Test getting window width 195*edd6aacbSBram Moolenaar call assert_equal('2', RubyEval('$curwin.width')) 196*edd6aacbSBram Moolenaar 197*edd6aacbSBram Moolenaar bwipe 198*edd6aacbSBram Moolenaarendfunc 199*edd6aacbSBram Moolenaar 200*edd6aacbSBram Moolenaar" Test window.buffer (get buffer object of a window object). 201*edd6aacbSBram Moolenaarfunc Test_window_buffer() 202*edd6aacbSBram Moolenaar new Xfoo1 203*edd6aacbSBram Moolenaar new Xfoo2 204*edd6aacbSBram Moolenaar ruby $b2 = $curwin.buffer 205*edd6aacbSBram Moolenaar ruby $w2 = $curwin 206*edd6aacbSBram Moolenaar wincmd j 207*edd6aacbSBram Moolenaar ruby $b1 = $curwin.buffer 208*edd6aacbSBram Moolenaar ruby $w1 = $curwin 209*edd6aacbSBram Moolenaar 210*edd6aacbSBram Moolenaar call assert_equal(RubyEval('$b1'), RubyEval('$w1.buffer')) 211*edd6aacbSBram Moolenaar call assert_equal(RubyEval('$b2'), RubyEval('$w2.buffer')) 212*edd6aacbSBram Moolenaar call assert_equal(string(bufnr('Xfoo1')), RubyEval('$w1.buffer.number')) 213*edd6aacbSBram Moolenaar call assert_equal(string(bufnr('Xfoo2')), RubyEval('$w2.buffer.number')) 214*edd6aacbSBram Moolenaar 215*edd6aacbSBram Moolenaar ruby $b1, $w1, $b2, $w2 = nil 216*edd6aacbSBram Moolenaar %bwipe 217*edd6aacbSBram Moolenaarendfunc 218*edd6aacbSBram Moolenaar 219*edd6aacbSBram Moolenaar" Test Vim::Window.current (get current window object) 220*edd6aacbSBram Moolenaarfunc Test_Vim_window_current() 221*edd6aacbSBram Moolenaar let cw = RubyEval('$curwin') 222*edd6aacbSBram Moolenaar call assert_equal(cw, RubyEval('Vim::Window.current')) 223*edd6aacbSBram Moolenaar call assert_match('^#<Vim::Window:0x\x\+>$', cw) 224*edd6aacbSBram Moolenaarendfunc 225*edd6aacbSBram Moolenaar 226*edd6aacbSBram Moolenaar" Test Vim::Window.count (number of windows) 227*edd6aacbSBram Moolenaarfunc Test_Vim_window_count() 228*edd6aacbSBram Moolenaar new Xfoo1 229*edd6aacbSBram Moolenaar new Xfoo2 230*edd6aacbSBram Moolenaar split 231*edd6aacbSBram Moolenaar call assert_equal('4', RubyEval('Vim::Window.count')) 232*edd6aacbSBram Moolenaar %bwipe 233*edd6aacbSBram Moolenaar call assert_equal('1', RubyEval('Vim::Window.count')) 234*edd6aacbSBram Moolenaarendfunc 235*edd6aacbSBram Moolenaar 236*edd6aacbSBram Moolenaar" Test Vim::Window[n] (get window object of window n) 237*edd6aacbSBram Moolenaarfunc Test_Vim_window_get() 238*edd6aacbSBram Moolenaar new Xfoo1 239*edd6aacbSBram Moolenaar new Xfoo2 240*edd6aacbSBram Moolenaar call assert_match('Xfoo2$', RubyEval('Vim::Window[0].buffer.name')) 241*edd6aacbSBram Moolenaar wincmd j 242*edd6aacbSBram Moolenaar call assert_match('Xfoo1$', RubyEval('Vim::Window[1].buffer.name')) 243*edd6aacbSBram Moolenaar wincmd j 244*edd6aacbSBram Moolenaar call assert_equal('', RubyEval('Vim::Window[2].buffer.name')) 245*edd6aacbSBram Moolenaar %bwipe 246*edd6aacbSBram Moolenaarendfunc 247*edd6aacbSBram Moolenaar 248*edd6aacbSBram Moolenaar" Test Vim::Buffer.current (return the buffer object of current buffer) 249*edd6aacbSBram Moolenaarfunc Test_Vim_buffer_current() 250*edd6aacbSBram Moolenaar let cb = RubyEval('$curbuf') 251*edd6aacbSBram Moolenaar call assert_equal(cb, RubyEval('Vim::Buffer.current')) 252*edd6aacbSBram Moolenaar call assert_match('^#<Vim::Buffer:0x\x\+>$', cb) 253*edd6aacbSBram Moolenaarendfunc 254*edd6aacbSBram Moolenaar 255*edd6aacbSBram Moolenaar" Test Vim::Buffer:.count (return the number of buffers) 256*edd6aacbSBram Moolenaarfunc Test_Vim_buffer_count() 257*edd6aacbSBram Moolenaar new Xfoo1 258*edd6aacbSBram Moolenaar new Xfoo2 259*edd6aacbSBram Moolenaar call assert_equal('3', RubyEval('Vim::Buffer.count')) 260*edd6aacbSBram Moolenaar %bwipe 261*edd6aacbSBram Moolenaar call assert_equal('1', RubyEval('Vim::Buffer.count')) 262*edd6aacbSBram Moolenaarendfunc 263*edd6aacbSBram Moolenaar 264*edd6aacbSBram Moolenaar" Test Vim::buffer[n] (return the buffer object of buffer number n) 265*edd6aacbSBram Moolenaarfunc Test_Vim_buffer_get() 266*edd6aacbSBram Moolenaar new Xfoo1 267*edd6aacbSBram Moolenaar new Xfoo2 268*edd6aacbSBram Moolenaar 269*edd6aacbSBram Moolenaar " Index of Vim::Buffer[n] goes from 0 to the number of buffers. 270*edd6aacbSBram Moolenaar call assert_equal('', RubyEval('Vim::Buffer[0].name')) 271*edd6aacbSBram Moolenaar call assert_match('Xfoo1$', RubyEval('Vim::Buffer[1].name')) 272*edd6aacbSBram Moolenaar call assert_match('Xfoo2$', RubyEval('Vim::Buffer[2].name')) 273*edd6aacbSBram Moolenaar call assert_fails('ruby print Vim::Buffer[3].name', 274*edd6aacbSBram Moolenaar \ "NoMethodError: undefined method `name' for nil:NilClass") 275*edd6aacbSBram Moolenaar %bwipe 276*edd6aacbSBram Moolenaarendfunc 277*edd6aacbSBram Moolenaar 278*edd6aacbSBram Moolenaar" Test Vim::command({cmd}) (execute a Ex command)) 279*edd6aacbSBram Moolenaar" Test Vim::command({cmd}) 280*edd6aacbSBram Moolenaarfunc Test_Vim_command() 281*edd6aacbSBram Moolenaar new 282*edd6aacbSBram Moolenaar call setline(1, ['one', 'two', 'three', 'four']) 283*edd6aacbSBram Moolenaar ruby Vim::command('2,3d') 284*edd6aacbSBram Moolenaar call assert_equal(['one', 'four'], getline(1, '$')) 285*edd6aacbSBram Moolenaar bwipe! 286*edd6aacbSBram Moolenaarendfunc 287*edd6aacbSBram Moolenaar 288*edd6aacbSBram Moolenaar" Test Vim::set_option (set a vim option) 289*edd6aacbSBram Moolenaarfunc Test_Vim_set_option() 290*edd6aacbSBram Moolenaar call assert_equal(0, &number) 291*edd6aacbSBram Moolenaar ruby Vim::set_option('number') 292*edd6aacbSBram Moolenaar call assert_equal(1, &number) 293*edd6aacbSBram Moolenaar ruby Vim::set_option('nonumber') 294*edd6aacbSBram Moolenaar call assert_equal(0, &number) 295*edd6aacbSBram Moolenaarendfunc 296*edd6aacbSBram Moolenaar 297*edd6aacbSBram Moolenaarfunc Test_Vim_evaluate() 298*edd6aacbSBram Moolenaar call assert_equal('123', RubyEval('Vim::evaluate("123")')) 299*edd6aacbSBram Moolenaar " Vim::evaluate("123").class gives Integer or Fixnum depending 300*edd6aacbSBram Moolenaar " on versions of Ruby. 301*edd6aacbSBram Moolenaar call assert_match('^Integer\|Fixnum$', RubyEval('Vim::evaluate("123").class')) 302*edd6aacbSBram Moolenaar 303*edd6aacbSBram Moolenaar call assert_equal('1.23', RubyEval('Vim::evaluate("1.23")')) 304*edd6aacbSBram Moolenaar call assert_equal('Float', RubyEval('Vim::evaluate("1.23").class')) 305*edd6aacbSBram Moolenaar 306*edd6aacbSBram Moolenaar call assert_equal('foo', RubyEval('Vim::evaluate("\"foo\"")')) 307*edd6aacbSBram Moolenaar call assert_equal('String', RubyEval('Vim::evaluate("\"foo\"").class')) 308*edd6aacbSBram Moolenaar 309*edd6aacbSBram Moolenaar call assert_equal('[1, 2]', RubyEval('Vim::evaluate("[1, 2]")')) 310*edd6aacbSBram Moolenaar call assert_equal('Array', RubyEval('Vim::evaluate("[1, 2]").class')) 311*edd6aacbSBram Moolenaar 312*edd6aacbSBram Moolenaar call assert_equal('{"1"=>2}', RubyEval('Vim::evaluate("{1:2}")')) 313*edd6aacbSBram Moolenaar call assert_equal('Hash', RubyEval('Vim::evaluate("{1:2}").class')) 314*edd6aacbSBram Moolenaar 315*edd6aacbSBram Moolenaar call assert_equal('', RubyEval('Vim::evaluate("v:null")')) 316*edd6aacbSBram Moolenaar call assert_equal('NilClass', RubyEval('Vim::evaluate("v:null").class')) 317*edd6aacbSBram Moolenaar 318*edd6aacbSBram Moolenaar call assert_equal('', RubyEval('Vim::evaluate("v:none")')) 319*edd6aacbSBram Moolenaar call assert_equal('NilClass', RubyEval('Vim::evaluate("v:none").class')) 320*edd6aacbSBram Moolenaar 321*edd6aacbSBram Moolenaar call assert_equal('true', RubyEval('Vim::evaluate("v:true")')) 322*edd6aacbSBram Moolenaar call assert_equal('TrueClass', RubyEval('Vim::evaluate("v:true").class')) 323*edd6aacbSBram Moolenaar call assert_equal('false', RubyEval('Vim::evaluate("v:false")')) 324*edd6aacbSBram Moolenaar call assert_equal('FalseClass',RubyEval('Vim::evaluate("v:false").class')) 325*edd6aacbSBram Moolenaarendfunc 326*edd6aacbSBram Moolenaar 327*edd6aacbSBram Moolenaarfunc Test_Vim_evaluate_list() 328*edd6aacbSBram Moolenaar call setline(line('$'), ['2 line 2']) 329*edd6aacbSBram Moolenaar ruby Vim.command("normal /^2\n") 330*edd6aacbSBram Moolenaar let l = ["abc", "def"] 331*edd6aacbSBram Moolenaar ruby << EOF 332*edd6aacbSBram Moolenaar curline = $curbuf.line_number 333*edd6aacbSBram Moolenaar l = Vim.evaluate("l"); 334*edd6aacbSBram Moolenaar $curbuf.append(curline, l.join("\n")) 335*edd6aacbSBram MoolenaarEOF 336*edd6aacbSBram Moolenaar normal j 337*edd6aacbSBram Moolenaar .rubydo $_ = $_.gsub(/\n/, '/') 338*edd6aacbSBram Moolenaar call assert_equal('abc/def', getline('$')) 339*edd6aacbSBram Moolenaarendfunc 340*edd6aacbSBram Moolenaar 341*edd6aacbSBram Moolenaarfunc Test_Vim_evaluate_dict() 342*edd6aacbSBram Moolenaar let d = {'a': 'foo', 'b': 123} 343*edd6aacbSBram Moolenaar redir => l:out 344*edd6aacbSBram Moolenaar ruby d = Vim.evaluate("d"); print d 345*edd6aacbSBram Moolenaar redir END 346*edd6aacbSBram Moolenaar call assert_equal(['{"a"=>"foo", "b"=>123}'], split(l:out, "\n")) 347*edd6aacbSBram Moolenaarendfunc 348*edd6aacbSBram Moolenaar 349*edd6aacbSBram Moolenaar" Test Vim::message({msg}) (display message {msg}) 350*edd6aacbSBram Moolenaarfunc Test_Vim_message() 351*edd6aacbSBram Moolenaar ruby Vim::message('A message') 352*edd6aacbSBram Moolenaar let messages = split(execute('message'), "\n") 353*edd6aacbSBram Moolenaar call assert_equal('A message', messages[-1]) 354*edd6aacbSBram Moolenaarendfunc 355*edd6aacbSBram Moolenaar 356*edd6aacbSBram Moolenaarfunc Test_print() 357*edd6aacbSBram Moolenaar ruby print "Hello World!" 358*edd6aacbSBram Moolenaar let messages = split(execute('message'), "\n") 359*edd6aacbSBram Moolenaar call assert_equal('Hello World!', messages[-1]) 360*edd6aacbSBram Moolenaarendfunc 361*edd6aacbSBram Moolenaar 362*edd6aacbSBram Moolenaarfunc Test_p() 363*edd6aacbSBram Moolenaar ruby p 'Just a test' 364*edd6aacbSBram Moolenaar let messages = split(execute('message'), "\n") 365*edd6aacbSBram Moolenaar call assert_equal('"Just a test"', messages[-1]) 36653901442SBram Moolenaarendfunc 367