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