| Smoke test for MzScheme interface and mzeval() function |
| |
| STARTTEST |
| :so mzscheme.vim |
| :set nocompatible viminfo+=nviminfo |
| :function! MzRequire() |
| :redir => l:mzversion |
| :mz (version) |
| :redir END |
| :if strpart(l:mzversion, 1, 1) < "4" |
| :" MzScheme versions < 4.x: |
| :mz (require (prefix vim- vimext)) |
| :else |
| :" newer versions: |
| :mz (require (prefix-in vim- 'vimext)) |
| :mz (require r5rs) |
| :endif |
| :endfunction |
| :silent call MzRequire() |
| :mz (define l '("item0" "dictionary with list OK" "item2")) |
| :mz (define h (make-hash)) |
| :mz (hash-set! h "list" l) |
| /^1 |
| :" change buffer contents |
| :mz (vim-set-buff-line (vim-eval "line('.')") "1 changed line 1") |
| :" scalar test |
| :let tmp_string = mzeval('"string"') |
| :let tmp_1000 = mzeval('1000') |
| :if tmp_string . tmp_1000 == "string1000" |
| :let scalar_res = "OK" |
| :else |
| :let scalar_res = "FAILED" |
| :endif |
| :call append(search("^1"), "scalar test " . scalar_res) |
| :" dictionary containing a list |
| :let tmp = mzeval("h")["list"][1] |
| :/^2/put =tmp |
| :" circular list (at the same time test lists containing lists) |
| :mz (set-car! (cddr l) l) |
| :let l2 = mzeval("h")["list"] |
| :if l2[2] == l2 |
| :let res = "OK" |
| :else |
| :let res = "FAILED: " . l2[2] |
| :endif |
| :call setline(search("^3"), "circular test " . res) |
| :" funcrefs |
| :mz (define vim:max (vim-eval "function('max')")) |
| :mz (define m (vim:max '(1 100 8))) |
| :let m = mzeval('m') |
| :if m == 100 |
| :let fref_res = "OK" |
| :else |
| :let fref_res = "FAILED: " . m |
| :end |
| :call append(line('$'), 'funcrefs '. fref_res) |
| :?^1?,$w! test.out |
| :qa! |
| ENDTEST |
| |
| 1 line 1 |
| 2 line 2 |
| 3 line 3 |