annotate src/testdir/test_mzscheme.vim @ 31626:f5bb69a83d8e v9.0.1145

patch 9.0.1145: invalid memory access with recursive substitute expression Commit: https://github.com/vim/vim/commit/3ac1d97a1d9353490493d30088256360435f7731 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Jan 4 17:17:54 2023 +0000 patch 9.0.1145: invalid memory access with recursive substitute expression Problem: Invalid memory access with recursive substitute expression. Solution: Check the return value of vim_regsub().
author Bram Moolenaar <Bram@vim.org>
date Wed, 04 Jan 2023 18:30:03 +0100
parents 31cb78014fe4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21510
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1 " Test for MzScheme interface and mzeval() function
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
2
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
3 source check.vim
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
4 CheckFeature mzscheme
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
5
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
6 func MzRequire()
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
7 redir => l:mzversion
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
8 mz (version)
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
9 redir END
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
10 if strpart(l:mzversion, 1, 1) < "4"
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
11 " MzScheme versions < 4.x:
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
12 mz (require (prefix vim- vimext))
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
13 else
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
14 " newer versions:
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
15 mz (require (prefix-in vim- 'vimext))
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
16 mz (require r5rs)
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
17 endif
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
18 endfunc
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
19
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
20 func Test_mzscheme()
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
21 new
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
22 let lines =<< trim END
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
23 1 line 1
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
24 2 line 2
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
25 3 line 3
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
26 END
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
27 call setline(1, lines)
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
28
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
29 call MzRequire()
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
30 mz (define l '("item0" "dictionary with list OK" "item2"))
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
31 mz (define h (make-hash))
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
32 mz (hash-set! h "list" l)
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
33
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
34 call cursor(1, 1)
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
35 " change buffer contents
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
36 mz (vim-set-buff-line (vim-eval "line('.')") "1 changed line 1")
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
37 call assert_equal('1 changed line 1', getline(1))
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
38
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
39 " scalar test
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
40 let tmp_string = mzeval('"string"')
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
41 let tmp_1000 = '1000'->mzeval()
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
42 call assert_equal('string1000', tmp_string .. tmp_1000)
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
43
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
44 " dictionary containing a list
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
45 call assert_equal('dictionary with list OK', mzeval("h")["list"][1])
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
46
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
47 call cursor(2, 1)
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
48 " circular list (at the same time test lists containing lists)
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
49 mz (set-car! (cddr l) l)
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
50 let l2 = mzeval("h")["list"]
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
51 call assert_equal(l2[2], l2)
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
52
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
53 " funcrefs
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
54 mz (define vim:max (vim-eval "function('max')"))
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
55 mz (define m (vim:max '(1 100 8)))
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
56 let m = mzeval('m')
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
57 call assert_equal(100, m)
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
58
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
59 close!
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
60 endfunc
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
61
31cb78014fe4 patch 8.2.1305: some tests are still old style
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
62 " vim: shiftwidth=2 sts=2 expandtab