Bram Moolenaar | 7e506b6 | 2010-01-19 15:55:06 +0100 | [diff] [blame] | 1 | Smoke test for MzScheme interface and mzeval() function |
| 2 | |
| 3 | STARTTEST |
| 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! |
| 49 | ENDTEST |
| 50 | |
| 51 | 1 line 1 |
| 52 | 2 line 2 |
| 53 | 3 line 3 |