1*622b3568SBram Moolenaar" Test for MzScheme interface and mzeval() function 2*622b3568SBram Moolenaar 3*622b3568SBram Moolenaarsource check.vim 4*622b3568SBram MoolenaarCheckFeature mzscheme 5*622b3568SBram Moolenaar 6*622b3568SBram Moolenaarfunc MzRequire() 7*622b3568SBram Moolenaar redir => l:mzversion 8*622b3568SBram Moolenaar mz (version) 9*622b3568SBram Moolenaar redir END 10*622b3568SBram Moolenaar if strpart(l:mzversion, 1, 1) < "4" 11*622b3568SBram Moolenaar " MzScheme versions < 4.x: 12*622b3568SBram Moolenaar mz (require (prefix vim- vimext)) 13*622b3568SBram Moolenaar else 14*622b3568SBram Moolenaar " newer versions: 15*622b3568SBram Moolenaar mz (require (prefix-in vim- 'vimext)) 16*622b3568SBram Moolenaar mz (require r5rs) 17*622b3568SBram Moolenaar endif 18*622b3568SBram Moolenaarendfunc 19*622b3568SBram Moolenaar 20*622b3568SBram Moolenaarfunc Test_mzscheme() 21*622b3568SBram Moolenaar new 22*622b3568SBram Moolenaar let lines =<< trim END 23*622b3568SBram Moolenaar 1 line 1 24*622b3568SBram Moolenaar 2 line 2 25*622b3568SBram Moolenaar 3 line 3 26*622b3568SBram Moolenaar END 27*622b3568SBram Moolenaar call setline(1, lines) 28*622b3568SBram Moolenaar 29*622b3568SBram Moolenaar call MzRequire() 30*622b3568SBram Moolenaar mz (define l '("item0" "dictionary with list OK" "item2")) 31*622b3568SBram Moolenaar mz (define h (make-hash)) 32*622b3568SBram Moolenaar mz (hash-set! h "list" l) 33*622b3568SBram Moolenaar 34*622b3568SBram Moolenaar call cursor(1, 1) 35*622b3568SBram Moolenaar " change buffer contents 36*622b3568SBram Moolenaar mz (vim-set-buff-line (vim-eval "line('.')") "1 changed line 1") 37*622b3568SBram Moolenaar call assert_equal('1 changed line 1', getline(1)) 38*622b3568SBram Moolenaar 39*622b3568SBram Moolenaar " scalar test 40*622b3568SBram Moolenaar let tmp_string = mzeval('"string"') 41*622b3568SBram Moolenaar let tmp_1000 = '1000'->mzeval() 42*622b3568SBram Moolenaar call assert_equal('string1000', tmp_string .. tmp_1000) 43*622b3568SBram Moolenaar 44*622b3568SBram Moolenaar " dictionary containing a list 45*622b3568SBram Moolenaar call assert_equal('dictionary with list OK', mzeval("h")["list"][1]) 46*622b3568SBram Moolenaar 47*622b3568SBram Moolenaar call cursor(2, 1) 48*622b3568SBram Moolenaar " circular list (at the same time test lists containing lists) 49*622b3568SBram Moolenaar mz (set-car! (cddr l) l) 50*622b3568SBram Moolenaar let l2 = mzeval("h")["list"] 51*622b3568SBram Moolenaar call assert_equal(l2[2], l2) 52*622b3568SBram Moolenaar 53*622b3568SBram Moolenaar " funcrefs 54*622b3568SBram Moolenaar mz (define vim:max (vim-eval "function('max')")) 55*622b3568SBram Moolenaar mz (define m (vim:max '(1 100 8))) 56*622b3568SBram Moolenaar let m = mzeval('m') 57*622b3568SBram Moolenaar call assert_equal(100, m) 58*622b3568SBram Moolenaar 59*622b3568SBram Moolenaar close! 60*622b3568SBram Moolenaarendfunc 61*622b3568SBram Moolenaar 62*622b3568SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 63