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"] |
Bram Moolenaar | 7567646 | 2013-01-30 14:55:42 +0100 | [diff] [blame^] | 41 | :" bug: this returns item2, but it should be l2 |
| 42 | :if l2[2] == "item2" |
Bram Moolenaar | 7e506b6 | 2010-01-19 15:55:06 +0100 | [diff] [blame] | 43 | :let res = "OK" |
| 44 | :else |
Bram Moolenaar | 7567646 | 2013-01-30 14:55:42 +0100 | [diff] [blame^] | 45 | :let res = "FAILED: " . l2[2] |
Bram Moolenaar | 7e506b6 | 2010-01-19 15:55:06 +0100 | [diff] [blame] | 46 | :endif |
| 47 | :call setline(search("^3"), "circular test " . res) |
Bram Moolenaar | 7567646 | 2013-01-30 14:55:42 +0100 | [diff] [blame^] | 48 | :" funcrefs |
| 49 | :mz (define vim:max (vim-eval "function('max')")) |
| 50 | :mz (define m (vim:max '(1 100 8))) |
| 51 | :let m = mzeval('m') |
| 52 | :if m == 100 |
| 53 | :let fref_res = "OK" |
| 54 | :else |
| 55 | :let fref_res = "FAILED: " . m |
| 56 | :end |
| 57 | :call append(line('$'), 'funcrefs '. fref_res) |
Bram Moolenaar | 7e506b6 | 2010-01-19 15:55:06 +0100 | [diff] [blame] | 58 | :?^1?,$w! test.out |
| 59 | :qa! |
| 60 | ENDTEST |
| 61 | |
| 62 | 1 line 1 |
| 63 | 2 line 2 |
| 64 | 3 line 3 |