1Smoke test for MzScheme interface and mzeval() function 2 3STARTTEST 4:so mzscheme.vim 5:set nocompatible viminfo+=nviminfo 6:function! MzRequire() 7:redir => l:mzversion 8:mz (version) 9:redir END 10:if strpart(l:mzversion, 1, 1) < "4" 11:" MzScheme versions < 4.x: 12:mz (require (prefix vim- vimext)) 13:else 14:" newer versions: 15:mz (require (prefix-in vim- 'vimext)) 16:mz (require r5rs) 17:endif 18:endfunction 19:silent call MzRequire() 20:mz (define l '("item0" "dictionary with list OK" "item2")) 21:mz (define h (make-hash)) 22:mz (hash-set! h "list" l) 23/^1 24:" change buffer contents 25:mz (vim-set-buff-line (vim-eval "line('.')") "1 changed line 1") 26:" scalar test 27:let tmp_string = mzeval('"string"') 28:let tmp_1000 = mzeval('1000') 29:if tmp_string . tmp_1000 == "string1000" 30:let scalar_res = "OK" 31:else 32:let scalar_res = "FAILED" 33:endif 34:call append(search("^1"), "scalar test " . scalar_res) 35:" dictionary containing a list 36:let tmp = mzeval("h")["list"][1] 37:/^2/put =tmp 38:" circular list (at the same time test lists containing lists) 39:mz (set-car! (cddr l) l) 40:let l2 = mzeval("h")["list"] 41:if l2[2] == l2 42:let res = "OK" 43:else 44:let res = "FAILED" 45:endif 46:call setline(search("^3"), "circular test " . res) 47:?^1?,$w! test.out 48:qa! 49ENDTEST 50 511 line 1 522 line 2 533 line 3 54