185babd6dSBram Moolenaar" Tests for ruby interface 285babd6dSBram Moolenaar 3*b46fecd3SBram Moolenaarsource check.vim 4*b46fecd3SBram MoolenaarCheckFeature ruby 585babd6dSBram Moolenaar 685babd6dSBram Moolenaarfunc Test_ruby_change_buffer() 785babd6dSBram Moolenaar call setline(line('$'), ['1 line 1']) 885babd6dSBram Moolenaar ruby Vim.command("normal /^1\n") 985babd6dSBram Moolenaar ruby $curbuf.line = "1 changed line 1" 1085babd6dSBram Moolenaar call assert_equal('1 changed line 1', getline('$')) 1185babd6dSBram Moolenaarendfunc 1285babd6dSBram Moolenaar 13c593fee0SBram Moolenaarfunc Test_rubydo() 14c593fee0SBram Moolenaar " Check deleting lines does not trigger ml_get error. 15c593fee0SBram Moolenaar new 16c593fee0SBram Moolenaar call setline(1, ['one', 'two', 'three']) 17c593fee0SBram Moolenaar rubydo Vim.command("%d_") 18c593fee0SBram Moolenaar bwipe! 19c593fee0SBram Moolenaar 20c593fee0SBram Moolenaar " Check switching to another buffer does not trigger ml_get error. 21c593fee0SBram Moolenaar new 22c593fee0SBram Moolenaar let wincount = winnr('$') 23c593fee0SBram Moolenaar call setline(1, ['one', 'two', 'three']) 24c593fee0SBram Moolenaar rubydo Vim.command("new") 25c593fee0SBram Moolenaar call assert_equal(wincount + 1, winnr('$')) 26edd6aacbSBram Moolenaar %bwipe! 27c593fee0SBram Moolenaarendfunc 2837badc89SBram Moolenaar 2937badc89SBram Moolenaarfunc Test_rubyfile() 3037badc89SBram Moolenaar " Check :rubyfile does not SEGV with Ruby level exception but just fails 3137badc89SBram Moolenaar let tempfile = tempname() . '.rb' 3237badc89SBram Moolenaar call writefile(['raise "vim!"'], tempfile) 3337badc89SBram Moolenaar call assert_fails('rubyfile ' . tempfile) 3437badc89SBram Moolenaar call delete(tempfile) 3537badc89SBram Moolenaarendfunc 3653901442SBram Moolenaar 3753901442SBram Moolenaarfunc Test_set_cursor() 3853901442SBram Moolenaar " Check that setting the cursor position works. 3953901442SBram Moolenaar new 4053901442SBram Moolenaar call setline(1, ['first line', 'second line']) 4153901442SBram Moolenaar normal gg 4253901442SBram Moolenaar rubydo $curwin.cursor = [1, 5] 4353901442SBram Moolenaar call assert_equal([1, 6], [line('.'), col('.')]) 44e99be0e6SBram Moolenaar call assert_equal([1, 5], rubyeval('$curwin.cursor')) 4553901442SBram Moolenaar 4653901442SBram Moolenaar " Check that movement after setting cursor position keeps current column. 4753901442SBram Moolenaar normal j 4853901442SBram Moolenaar call assert_equal([2, 6], [line('.'), col('.')]) 49e99be0e6SBram Moolenaar call assert_equal([2, 5], rubyeval('$curwin.cursor')) 50edd6aacbSBram Moolenaar 51edd6aacbSBram Moolenaar call assert_fails('ruby $curwin.cursor = [1]', 52edd6aacbSBram Moolenaar \ 'ArgumentError: array length must be 2') 53edd6aacbSBram Moolenaar bwipe! 54edd6aacbSBram Moolenaarendfunc 55edd6aacbSBram Moolenaar 56edd6aacbSBram Moolenaar" Test buffer.count and buffer.length (number of lines in buffer) 57edd6aacbSBram Moolenaarfunc Test_buffer_count() 58edd6aacbSBram Moolenaar new 59edd6aacbSBram Moolenaar call setline(1, ['one', 'two', 'three']) 60e99be0e6SBram Moolenaar call assert_equal(3, rubyeval('$curbuf.count')) 61e99be0e6SBram Moolenaar call assert_equal(3, rubyeval('$curbuf.length')) 62edd6aacbSBram Moolenaar bwipe! 63edd6aacbSBram Moolenaarendfunc 64edd6aacbSBram Moolenaar 65edd6aacbSBram Moolenaar" Test buffer.name (buffer name) 66edd6aacbSBram Moolenaarfunc Test_buffer_name() 67edd6aacbSBram Moolenaar new Xfoo 68e99be0e6SBram Moolenaar call assert_equal(expand('%:p'), rubyeval('$curbuf.name')) 69edd6aacbSBram Moolenaar bwipe 70e99be0e6SBram Moolenaar call assert_equal(v:null, rubyeval('$curbuf.name')) 71edd6aacbSBram Moolenaarendfunc 72edd6aacbSBram Moolenaar 73edd6aacbSBram Moolenaar" Test buffer.number (number of the buffer). 74edd6aacbSBram Moolenaarfunc Test_buffer_number() 75edd6aacbSBram Moolenaar new 76e99be0e6SBram Moolenaar call assert_equal(bufnr('%'), rubyeval('$curbuf.number')) 77edd6aacbSBram Moolenaar new 78e99be0e6SBram Moolenaar call assert_equal(bufnr('%'), rubyeval('$curbuf.number')) 79edd6aacbSBram Moolenaar 80edd6aacbSBram Moolenaar %bwipe 81edd6aacbSBram Moolenaarendfunc 82edd6aacbSBram Moolenaar 83edd6aacbSBram Moolenaar" Test buffer.delete({n}) (delete line {n}) 84edd6aacbSBram Moolenaarfunc Test_buffer_delete() 85edd6aacbSBram Moolenaar new 86edd6aacbSBram Moolenaar call setline(1, ['one', 'two', 'three']) 87edd6aacbSBram Moolenaar ruby $curbuf.delete(2) 88edd6aacbSBram Moolenaar call assert_equal(['one', 'three'], getline(1, '$')) 89edd6aacbSBram Moolenaar 90edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf.delete(0)', 'IndexError: line number 0 out of range') 91edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf.delete(3)', 'IndexError: line number 3 out of range') 92edd6aacbSBram Moolenaar 93edd6aacbSBram Moolenaar bwipe! 94edd6aacbSBram Moolenaarendfunc 95edd6aacbSBram Moolenaar 96edd6aacbSBram Moolenaar" Test buffer.append({str}, str) (append line {str} after line {n}) 97edd6aacbSBram Moolenaarfunc Test_buffer_append() 98edd6aacbSBram Moolenaar new 99edd6aacbSBram Moolenaar ruby $curbuf.append(0, 'one') 100edd6aacbSBram Moolenaar ruby $curbuf.append(1, 'three') 101edd6aacbSBram Moolenaar ruby $curbuf.append(1, 'two') 102edd6aacbSBram Moolenaar ruby $curbuf.append(4, 'four') 103edd6aacbSBram Moolenaar 104edd6aacbSBram Moolenaar call assert_equal(['one', 'two', 'three', '', 'four'], getline(1, '$')) 105edd6aacbSBram Moolenaar 106edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf.append(-1, "x")', 107edd6aacbSBram Moolenaar \ 'IndexError: line number -1 out of range') 108edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf.append(6, "x")', 109edd6aacbSBram Moolenaar \ 'IndexError: line number 6 out of range') 110edd6aacbSBram Moolenaar 111edd6aacbSBram Moolenaar bwipe! 112edd6aacbSBram Moolenaarendfunc 113edd6aacbSBram Moolenaar 114edd6aacbSBram Moolenaar" Test buffer.line (get or set the current line) 115edd6aacbSBram Moolenaarfunc Test_buffer_line() 116edd6aacbSBram Moolenaar new 117edd6aacbSBram Moolenaar call setline(1, ['one', 'two', 'three']) 118edd6aacbSBram Moolenaar 2 119e99be0e6SBram Moolenaar call assert_equal('two', rubyeval('$curbuf.line')) 120edd6aacbSBram Moolenaar 121edd6aacbSBram Moolenaar ruby $curbuf.line = 'TWO' 122edd6aacbSBram Moolenaar call assert_equal(['one', 'TWO', 'three'], getline(1, '$')) 123edd6aacbSBram Moolenaar 124edd6aacbSBram Moolenaar bwipe! 125edd6aacbSBram Moolenaarendfunc 126edd6aacbSBram Moolenaar 127edd6aacbSBram Moolenaar" Test buffer.line_number (get current line number) 128edd6aacbSBram Moolenaarfunc Test_buffer_line_number() 129edd6aacbSBram Moolenaar new 130edd6aacbSBram Moolenaar call setline(1, ['one', 'two', 'three']) 131edd6aacbSBram Moolenaar 2 132e99be0e6SBram Moolenaar call assert_equal(2, rubyeval('$curbuf.line_number')) 133edd6aacbSBram Moolenaar 134edd6aacbSBram Moolenaar bwipe! 135edd6aacbSBram Moolenaarendfunc 136edd6aacbSBram Moolenaar 137edd6aacbSBram Moolenaarfunc Test_buffer_get() 138edd6aacbSBram Moolenaar new 139edd6aacbSBram Moolenaar call setline(1, ['one', 'two']) 140e99be0e6SBram Moolenaar call assert_equal('one', rubyeval('$curbuf[1]')) 141e99be0e6SBram Moolenaar call assert_equal('two', rubyeval('$curbuf[2]')) 142edd6aacbSBram Moolenaar 143edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf[0]', 144edd6aacbSBram Moolenaar \ 'IndexError: line number 0 out of range') 145edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf[3]', 146edd6aacbSBram Moolenaar \ 'IndexError: line number 3 out of range') 147edd6aacbSBram Moolenaar 148edd6aacbSBram Moolenaar bwipe! 149edd6aacbSBram Moolenaarendfunc 150edd6aacbSBram Moolenaar 151edd6aacbSBram Moolenaarfunc Test_buffer_set() 152edd6aacbSBram Moolenaar new 153edd6aacbSBram Moolenaar call setline(1, ['one', 'two']) 154edd6aacbSBram Moolenaar ruby $curbuf[2] = 'TWO' 155edd6aacbSBram Moolenaar ruby $curbuf[1] = 'ONE' 156edd6aacbSBram Moolenaar 157edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf[0] = "ZERO"', 158edd6aacbSBram Moolenaar \ 'IndexError: line number 0 out of range') 159edd6aacbSBram Moolenaar call assert_fails('ruby $curbuf[3] = "THREE"', 160edd6aacbSBram Moolenaar \ 'IndexError: line number 3 out of range') 161edd6aacbSBram Moolenaar bwipe! 162edd6aacbSBram Moolenaarendfunc 163edd6aacbSBram Moolenaar 164edd6aacbSBram Moolenaar" Test window.width (get or set window height). 165edd6aacbSBram Moolenaarfunc Test_window_height() 166edd6aacbSBram Moolenaar new 167edd6aacbSBram Moolenaar 168edd6aacbSBram Moolenaar " Test setting window height 169edd6aacbSBram Moolenaar ruby $curwin.height = 2 170edd6aacbSBram Moolenaar call assert_equal(2, winheight(0)) 171edd6aacbSBram Moolenaar 172edd6aacbSBram Moolenaar " Test getting window height 173e99be0e6SBram Moolenaar call assert_equal(2, rubyeval('$curwin.height')) 174edd6aacbSBram Moolenaar 175edd6aacbSBram Moolenaar bwipe 176edd6aacbSBram Moolenaarendfunc 177edd6aacbSBram Moolenaar 178edd6aacbSBram Moolenaar" Test window.width (get or set window width). 179edd6aacbSBram Moolenaarfunc Test_window_width() 180edd6aacbSBram Moolenaar vnew 181edd6aacbSBram Moolenaar 182edd6aacbSBram Moolenaar " Test setting window width 183edd6aacbSBram Moolenaar ruby $curwin.width = 2 184edd6aacbSBram Moolenaar call assert_equal(2, winwidth(0)) 185edd6aacbSBram Moolenaar 186edd6aacbSBram Moolenaar " Test getting window width 187e99be0e6SBram Moolenaar call assert_equal(2, rubyeval('$curwin.width')) 188edd6aacbSBram Moolenaar 189edd6aacbSBram Moolenaar bwipe 190edd6aacbSBram Moolenaarendfunc 191edd6aacbSBram Moolenaar 192edd6aacbSBram Moolenaar" Test window.buffer (get buffer object of a window object). 193edd6aacbSBram Moolenaarfunc Test_window_buffer() 194edd6aacbSBram Moolenaar new Xfoo1 195edd6aacbSBram Moolenaar new Xfoo2 196edd6aacbSBram Moolenaar ruby $b2 = $curwin.buffer 197edd6aacbSBram Moolenaar ruby $w2 = $curwin 198edd6aacbSBram Moolenaar wincmd j 199edd6aacbSBram Moolenaar ruby $b1 = $curwin.buffer 200edd6aacbSBram Moolenaar ruby $w1 = $curwin 201edd6aacbSBram Moolenaar 202e99be0e6SBram Moolenaar call assert_equal(rubyeval('$b1'), rubyeval('$w1.buffer')) 203e99be0e6SBram Moolenaar call assert_equal(rubyeval('$b2'), rubyeval('$w2.buffer')) 204e99be0e6SBram Moolenaar call assert_equal(bufnr('Xfoo1'), rubyeval('$w1.buffer.number')) 205e99be0e6SBram Moolenaar call assert_equal(bufnr('Xfoo2'), rubyeval('$w2.buffer.number')) 206edd6aacbSBram Moolenaar 207edd6aacbSBram Moolenaar ruby $b1, $w1, $b2, $w2 = nil 208edd6aacbSBram Moolenaar %bwipe 209edd6aacbSBram Moolenaarendfunc 210edd6aacbSBram Moolenaar 211edd6aacbSBram Moolenaar" Test Vim::Window.current (get current window object) 212edd6aacbSBram Moolenaarfunc Test_Vim_window_current() 213e99be0e6SBram Moolenaar let cw = rubyeval('$curwin') 214e99be0e6SBram Moolenaar call assert_equal(cw, rubyeval('Vim::Window.current')) 215edd6aacbSBram Moolenaar call assert_match('^#<Vim::Window:0x\x\+>$', cw) 216edd6aacbSBram Moolenaarendfunc 217edd6aacbSBram Moolenaar 218edd6aacbSBram Moolenaar" Test Vim::Window.count (number of windows) 219edd6aacbSBram Moolenaarfunc Test_Vim_window_count() 220edd6aacbSBram Moolenaar new Xfoo1 221edd6aacbSBram Moolenaar new Xfoo2 222edd6aacbSBram Moolenaar split 223e99be0e6SBram Moolenaar call assert_equal(4, rubyeval('Vim::Window.count')) 224edd6aacbSBram Moolenaar %bwipe 225e99be0e6SBram Moolenaar call assert_equal(1, rubyeval('Vim::Window.count')) 226edd6aacbSBram Moolenaarendfunc 227edd6aacbSBram Moolenaar 228edd6aacbSBram Moolenaar" Test Vim::Window[n] (get window object of window n) 229edd6aacbSBram Moolenaarfunc Test_Vim_window_get() 230edd6aacbSBram Moolenaar new Xfoo1 231edd6aacbSBram Moolenaar new Xfoo2 232e99be0e6SBram Moolenaar call assert_match('Xfoo2$', rubyeval('Vim::Window[0].buffer.name')) 233edd6aacbSBram Moolenaar wincmd j 234e99be0e6SBram Moolenaar call assert_match('Xfoo1$', rubyeval('Vim::Window[1].buffer.name')) 235edd6aacbSBram Moolenaar wincmd j 236e99be0e6SBram Moolenaar call assert_equal(v:null, rubyeval('Vim::Window[2].buffer.name')) 237edd6aacbSBram Moolenaar %bwipe 238edd6aacbSBram Moolenaarendfunc 239edd6aacbSBram Moolenaar 240edd6aacbSBram Moolenaar" Test Vim::Buffer.current (return the buffer object of current buffer) 241edd6aacbSBram Moolenaarfunc Test_Vim_buffer_current() 242e99be0e6SBram Moolenaar let cb = rubyeval('$curbuf') 243e99be0e6SBram Moolenaar call assert_equal(cb, rubyeval('Vim::Buffer.current')) 244edd6aacbSBram Moolenaar call assert_match('^#<Vim::Buffer:0x\x\+>$', cb) 245edd6aacbSBram Moolenaarendfunc 246edd6aacbSBram Moolenaar 247edd6aacbSBram Moolenaar" Test Vim::Buffer:.count (return the number of buffers) 248edd6aacbSBram Moolenaarfunc Test_Vim_buffer_count() 249edd6aacbSBram Moolenaar new Xfoo1 250edd6aacbSBram Moolenaar new Xfoo2 251e99be0e6SBram Moolenaar call assert_equal(3, rubyeval('Vim::Buffer.count')) 252edd6aacbSBram Moolenaar %bwipe 253e99be0e6SBram Moolenaar call assert_equal(1, rubyeval('Vim::Buffer.count')) 254edd6aacbSBram Moolenaarendfunc 255edd6aacbSBram Moolenaar 256edd6aacbSBram Moolenaar" Test Vim::buffer[n] (return the buffer object of buffer number n) 257edd6aacbSBram Moolenaarfunc Test_Vim_buffer_get() 258edd6aacbSBram Moolenaar new Xfoo1 259edd6aacbSBram Moolenaar new Xfoo2 260edd6aacbSBram Moolenaar 261edd6aacbSBram Moolenaar " Index of Vim::Buffer[n] goes from 0 to the number of buffers. 262e99be0e6SBram Moolenaar call assert_equal(v:null, rubyeval('Vim::Buffer[0].name')) 263e99be0e6SBram Moolenaar call assert_match('Xfoo1$', rubyeval('Vim::Buffer[1].name')) 264e99be0e6SBram Moolenaar call assert_match('Xfoo2$', rubyeval('Vim::Buffer[2].name')) 265edd6aacbSBram Moolenaar call assert_fails('ruby print Vim::Buffer[3].name', 266edd6aacbSBram Moolenaar \ "NoMethodError: undefined method `name' for nil:NilClass") 267edd6aacbSBram Moolenaar %bwipe 268edd6aacbSBram Moolenaarendfunc 269edd6aacbSBram Moolenaar 270edd6aacbSBram Moolenaar" Test Vim::command({cmd}) (execute a Ex command)) 271edd6aacbSBram Moolenaar" Test Vim::command({cmd}) 272edd6aacbSBram Moolenaarfunc Test_Vim_command() 273edd6aacbSBram Moolenaar new 274edd6aacbSBram Moolenaar call setline(1, ['one', 'two', 'three', 'four']) 275edd6aacbSBram Moolenaar ruby Vim::command('2,3d') 276edd6aacbSBram Moolenaar call assert_equal(['one', 'four'], getline(1, '$')) 277edd6aacbSBram Moolenaar bwipe! 278edd6aacbSBram Moolenaarendfunc 279edd6aacbSBram Moolenaar 280edd6aacbSBram Moolenaar" Test Vim::set_option (set a vim option) 281edd6aacbSBram Moolenaarfunc Test_Vim_set_option() 282edd6aacbSBram Moolenaar call assert_equal(0, &number) 283edd6aacbSBram Moolenaar ruby Vim::set_option('number') 284edd6aacbSBram Moolenaar call assert_equal(1, &number) 285edd6aacbSBram Moolenaar ruby Vim::set_option('nonumber') 286edd6aacbSBram Moolenaar call assert_equal(0, &number) 287edd6aacbSBram Moolenaarendfunc 288edd6aacbSBram Moolenaar 289edd6aacbSBram Moolenaarfunc Test_Vim_evaluate() 290e99be0e6SBram Moolenaar call assert_equal(123, rubyeval('Vim::evaluate("123")')) 291edd6aacbSBram Moolenaar " Vim::evaluate("123").class gives Integer or Fixnum depending 292edd6aacbSBram Moolenaar " on versions of Ruby. 293e99be0e6SBram Moolenaar call assert_match('^Integer\|Fixnum$', rubyeval('Vim::evaluate("123").class')) 294edd6aacbSBram Moolenaar 295e99be0e6SBram Moolenaar call assert_equal(1.23, rubyeval('Vim::evaluate("1.23")')) 296e99be0e6SBram Moolenaar call assert_equal('Float', rubyeval('Vim::evaluate("1.23").class')) 297edd6aacbSBram Moolenaar 298e99be0e6SBram Moolenaar call assert_equal('foo', rubyeval('Vim::evaluate("\"foo\"")')) 299e99be0e6SBram Moolenaar call assert_equal('String', rubyeval('Vim::evaluate("\"foo\"").class')) 300edd6aacbSBram Moolenaar 301e99be0e6SBram Moolenaar call assert_equal(["\x01\xAB"], rubyeval('Vim::evaluate("0z01ab").unpack("M")')) 302e99be0e6SBram Moolenaar call assert_equal('String', rubyeval('Vim::evaluate("0z01ab").class')) 3030d13cce3SBram Moolenaar 304e99be0e6SBram Moolenaar call assert_equal([1, 2], rubyeval('Vim::evaluate("[1, 2]")')) 305e99be0e6SBram Moolenaar call assert_equal('Array', rubyeval('Vim::evaluate("[1, 2]").class')) 306edd6aacbSBram Moolenaar 307e99be0e6SBram Moolenaar call assert_equal({'1': 2}, rubyeval('Vim::evaluate("{1:2}")')) 308e99be0e6SBram Moolenaar call assert_equal('Hash', rubyeval('Vim::evaluate("{1:2}").class')) 309edd6aacbSBram Moolenaar 310e99be0e6SBram Moolenaar call assert_equal(v:null, rubyeval('Vim::evaluate("v:null")')) 311e99be0e6SBram Moolenaar call assert_equal('NilClass', rubyeval('Vim::evaluate("v:null").class')) 312edd6aacbSBram Moolenaar 313e99be0e6SBram Moolenaar call assert_equal(v:null, rubyeval('Vim::evaluate("v:none")')) 314e99be0e6SBram Moolenaar call assert_equal('NilClass', rubyeval('Vim::evaluate("v:none").class')) 315edd6aacbSBram Moolenaar 316e99be0e6SBram Moolenaar call assert_equal(v:true, rubyeval('Vim::evaluate("v:true")')) 317e99be0e6SBram Moolenaar call assert_equal('TrueClass', rubyeval('Vim::evaluate("v:true").class')) 318e99be0e6SBram Moolenaar call assert_equal(v:false, rubyeval('Vim::evaluate("v:false")')) 319e99be0e6SBram Moolenaar call assert_equal('FalseClass',rubyeval('Vim::evaluate("v:false").class')) 320edd6aacbSBram Moolenaarendfunc 321edd6aacbSBram Moolenaar 3220d13cce3SBram Moolenaarfunc Test_Vim_blob() 323e99be0e6SBram Moolenaar call assert_equal('0z', rubyeval('Vim::blob("")')) 324e99be0e6SBram Moolenaar call assert_equal('0z31326162', rubyeval('Vim::blob("12ab")')) 325e99be0e6SBram Moolenaar call assert_equal('0z00010203', rubyeval('Vim::blob("\x00\x01\x02\x03")')) 326e99be0e6SBram Moolenaar call assert_equal('0z8081FEFF', rubyeval('Vim::blob("\x80\x81\xfe\xff")')) 3270d13cce3SBram Moolenaarendfunc 3280d13cce3SBram Moolenaar 329edd6aacbSBram Moolenaarfunc Test_Vim_evaluate_list() 330edd6aacbSBram Moolenaar call setline(line('$'), ['2 line 2']) 331edd6aacbSBram Moolenaar ruby Vim.command("normal /^2\n") 332edd6aacbSBram Moolenaar let l = ["abc", "def"] 333edd6aacbSBram Moolenaar ruby << EOF 334edd6aacbSBram Moolenaar curline = $curbuf.line_number 335edd6aacbSBram Moolenaar l = Vim.evaluate("l"); 336edd6aacbSBram Moolenaar $curbuf.append(curline, l.join("\n")) 337edd6aacbSBram MoolenaarEOF 338edd6aacbSBram Moolenaar normal j 339edd6aacbSBram Moolenaar .rubydo $_ = $_.gsub(/\n/, '/') 340edd6aacbSBram Moolenaar call assert_equal('abc/def', getline('$')) 341edd6aacbSBram Moolenaarendfunc 342edd6aacbSBram Moolenaar 343edd6aacbSBram Moolenaarfunc Test_Vim_evaluate_dict() 344edd6aacbSBram Moolenaar let d = {'a': 'foo', 'b': 123} 345edd6aacbSBram Moolenaar redir => l:out 346edd6aacbSBram Moolenaar ruby d = Vim.evaluate("d"); print d 347edd6aacbSBram Moolenaar redir END 348edd6aacbSBram Moolenaar call assert_equal(['{"a"=>"foo", "b"=>123}'], split(l:out, "\n")) 349edd6aacbSBram Moolenaarendfunc 350edd6aacbSBram Moolenaar 351edd6aacbSBram Moolenaar" Test Vim::message({msg}) (display message {msg}) 352edd6aacbSBram Moolenaarfunc Test_Vim_message() 353edd6aacbSBram Moolenaar ruby Vim::message('A message') 354edd6aacbSBram Moolenaar let messages = split(execute('message'), "\n") 355edd6aacbSBram Moolenaar call assert_equal('A message', messages[-1]) 356edd6aacbSBram Moolenaarendfunc 357edd6aacbSBram Moolenaar 358edd6aacbSBram Moolenaarfunc Test_print() 359e99be0e6SBram Moolenaar func RubyPrint(expr) 360e99be0e6SBram Moolenaar return trim(execute('ruby print ' . a:expr)) 361e99be0e6SBram Moolenaar endfunc 362e99be0e6SBram Moolenaar 363e99be0e6SBram Moolenaar call assert_equal('123', RubyPrint('123')) 364e99be0e6SBram Moolenaar call assert_equal('1.23', RubyPrint('1.23')) 365e99be0e6SBram Moolenaar call assert_equal('Hello World!', RubyPrint('"Hello World!"')) 366e99be0e6SBram Moolenaar call assert_equal('[1, 2]', RubyPrint('[1, 2]')) 367e99be0e6SBram Moolenaar call assert_equal('{"k1"=>"v1", "k2"=>"v2"}', RubyPrint('({"k1" => "v1", "k2" => "v2"})')) 368e99be0e6SBram Moolenaar call assert_equal('true', RubyPrint('true')) 369e99be0e6SBram Moolenaar call assert_equal('false', RubyPrint('false')) 370e99be0e6SBram Moolenaar call assert_equal('', RubyPrint('nil')) 371e99be0e6SBram Moolenaar call assert_match('Vim', RubyPrint('Vim')) 372e99be0e6SBram Moolenaar call assert_match('Module', RubyPrint('Vim.class')) 373e99be0e6SBram Moolenaar 374e99be0e6SBram Moolenaar delfunc RubyPrint 375edd6aacbSBram Moolenaarendfunc 376edd6aacbSBram Moolenaar 377edd6aacbSBram Moolenaarfunc Test_p() 378edd6aacbSBram Moolenaar ruby p 'Just a test' 379edd6aacbSBram Moolenaar let messages = split(execute('message'), "\n") 380edd6aacbSBram Moolenaar call assert_equal('"Just a test"', messages[-1]) 38151e9fbf1SBram Moolenaar 38251e9fbf1SBram Moolenaar " Check return values of p method 38351e9fbf1SBram Moolenaar 384e99be0e6SBram Moolenaar call assert_equal(123, rubyeval('p(123)')) 385e99be0e6SBram Moolenaar call assert_equal([1, 2, 3], rubyeval('p(1, 2, 3)')) 38651e9fbf1SBram Moolenaar 38751e9fbf1SBram Moolenaar " Avoid the "message maintainer" line. 38851e9fbf1SBram Moolenaar let $LANG = '' 38951e9fbf1SBram Moolenaar messages clear 390e99be0e6SBram Moolenaar call assert_equal(v:true, rubyeval('p() == nil')) 39151e9fbf1SBram Moolenaar 39251e9fbf1SBram Moolenaar let messages = split(execute('message'), "\n") 39351e9fbf1SBram Moolenaar call assert_equal(0, len(messages)) 39453901442SBram Moolenaarendfunc 395