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