summaryrefslogtreecommitdiff
path: root/src/testdir/test_expr.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-08-16 21:30:54 +0200
committerBram Moolenaar <Bram@vim.org>2016-08-16 21:30:54 +0200
commite5a8f35b4286135f3469f3b00a6c2220553d9658 (patch)
treea7505fde61e414d9664d99be9136677584277521 /src/testdir/test_expr.vim
parentf5a39447a8ebe162ee62caa2ee502cd0e65eecaa (diff)
downloadvim-git-e5a8f35b4286135f3469f3b00a6c2220553d9658.tar.gz
patch 7.4.2220v7.4.2220
Problem: printf() gives an error when the argument for %s is not a string. (Ozaki Kiichi) Solution: Behave like invoking string() on the argument. (Ken Takata)
Diffstat (limited to 'src/testdir/test_expr.vim')
-rw-r--r--src/testdir/test_expr.vim27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/testdir/test_expr.vim b/src/testdir/test_expr.vim
index cd71c419a..e83585403 100644
--- a/src/testdir/test_expr.vim
+++ b/src/testdir/test_expr.vim
@@ -136,6 +136,33 @@ function Test_printf_64bit()
endif
endfunc
+function Test_printf_spec_s()
+ " number
+ call assert_equal("1234567890", printf('%s', 1234567890))
+
+ " string
+ call assert_equal("abcdefgi", printf('%s', "abcdefgi"))
+
+ " float
+ if has('float')
+ call assert_equal("1.23", printf('%s', 1.23))
+ endif
+
+ " list
+ let value = [1, 'two', ['three', 4]]
+ call assert_equal(string(value), printf('%s', value))
+
+ " dict
+ let value = {'key1' : 'value1', 'key2' : ['list', 'value'], 'key3' : {'dict' : 'value'}}
+ call assert_equal(string(value), printf('%s', value))
+
+ " funcref
+ call assert_equal('printf', printf('%s', function('printf')))
+
+ " partial
+ call assert_equal(string(function('printf', ['%s'])), printf('%s', function('printf', ['%s'])))
+endfunc
+
func Test_substitute_expr()
let g:val = 'XXX'
call assert_equal('XXX', substitute('yyy', 'y*', '\=g:val', ''))