aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/tlib_vim/spec/tlib
diff options
context:
space:
mode:
Diffstat (limited to 'vim/bundle/tlib_vim/spec/tlib')
-rwxr-xr-xvim/bundle/tlib_vim/spec/tlib/arg.vim66
-rw-r--r--vim/bundle/tlib_vim/spec/tlib/date.vim61
-rw-r--r--vim/bundle/tlib_vim/spec/tlib/dictionary.vim28
-rw-r--r--vim/bundle/tlib_vim/spec/tlib/eval.vim27
-rwxr-xr-xvim/bundle/tlib_vim/spec/tlib/file.vim59
-rw-r--r--vim/bundle/tlib_vim/spec/tlib/hash.vim58
-rwxr-xr-xvim/bundle/tlib_vim/spec/tlib/input.vim127
-rwxr-xr-xvim/bundle/tlib_vim/spec/tlib/list.vim67
-rwxr-xr-xvim/bundle/tlib_vim/spec/tlib/rx.vim27
-rwxr-xr-xvim/bundle/tlib_vim/spec/tlib/string.vim29
-rwxr-xr-xvim/bundle/tlib_vim/spec/tlib/url.vim23
-rwxr-xr-xvim/bundle/tlib_vim/spec/tlib/var.vim37
12 files changed, 609 insertions, 0 deletions
diff --git a/vim/bundle/tlib_vim/spec/tlib/arg.vim b/vim/bundle/tlib_vim/spec/tlib/arg.vim
new file mode 100755
index 0000000..cf060a2
--- /dev/null
+++ b/vim/bundle/tlib_vim/spec/tlib/arg.vim
@@ -0,0 +1,66 @@
+" @Author: Tom Link (mailto:micathom AT gmail com?subject=[vim])
+" @Website: http://www.vim.org/account/profile.php?user_id=4037
+" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
+" @Created: 2010-04-03.
+" @Last Change: 2010-04-03.
+" @Revision: 1
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+
+
+SpecBegin 'title': 'tlib#arg'
+
+function! TestGetArg(...) "{{{3
+ exec tlib#arg#Get(1, 'foo', 1)
+ return foo
+endf
+
+function! TestGetArg1(...) "{{{3
+ exec tlib#arg#Get(1, 'foo', 1, '!= ""')
+ return foo
+endf
+
+Should be equal TestGetArg(), 1
+Should be equal TestGetArg(''), ''
+Should be equal TestGetArg(2), 2
+Should be equal TestGetArg1(), 1
+Should be equal TestGetArg1(''), 1
+Should be equal TestGetArg1(2), 2
+
+function! TestArgs(...) "{{{3
+ exec tlib#arg#Let([['foo', "o"], ['bar', 2]])
+ return repeat(foo, bar)
+endf
+Should be equal TestArgs(), 'oo'
+Should be equal TestArgs('a'), 'aa'
+Should be equal TestArgs('a', 3), 'aaa'
+
+function! TestArgs1(...) "{{{3
+ exec tlib#arg#Let(['foo', ['bar', 2]])
+ return repeat(foo, bar)
+endf
+Should be equal TestArgs1(), ''
+Should be equal TestArgs1('a'), 'aa'
+Should be equal TestArgs1('a', 3), 'aaa'
+
+function! TestArgs2(...) "{{{3
+ exec tlib#arg#Let(['foo', 'bar'], 1)
+ return repeat(foo, bar)
+endf
+Should be equal TestArgs2(), '1'
+Should be equal TestArgs2('a'), 'a'
+Should be equal TestArgs2('a', 3), 'aaa'
+
+function! TestArgs3(...)
+ TVarArg ['a', 1], 'b'
+ return a . b
+endf
+Should be equal TestArgs3(), '1'
+Should be equal TestArgs3('a'), 'a'
+Should be equal TestArgs3('a', 3), 'a3'
+
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/vim/bundle/tlib_vim/spec/tlib/date.vim b/vim/bundle/tlib_vim/spec/tlib/date.vim
new file mode 100644
index 0000000..42c336b
--- /dev/null
+++ b/vim/bundle/tlib_vim/spec/tlib/date.vim
@@ -0,0 +1,61 @@
+" @Author: Tom Link (micathom AT gmail com?subject=[vim])
+" @Website: http://www.vim.org/account/profile.php?user_id=4037
+" @GIT: http://github.com/tomtom/vimtlib/
+" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
+" @Created: 2010-09-17.
+" @Last Change: 2016-03-16.
+" @Revision: 21
+
+SpecBegin 'title': 'tlib#date'
+
+Should be equal tlib#date#Parse('2000-1-0', 1), [2000, 1, 0]
+Should be equal tlib#date#Parse('2000-1-2'), [2000, 1, 2]
+Should be equal tlib#date#Parse('2000-01-02'), [2000, 1, 2]
+Should be equal tlib#date#Parse('2000-10-20'), [2000, 10, 20]
+
+Should be equal tlib#date#Parse('00-1-0', 1), [2000, 1, 0]
+Should be equal tlib#date#Parse('00-1-2'), [2000, 1, 2]
+Should be equal tlib#date#Parse('00-01-02'), [2000, 1, 2]
+Should be equal tlib#date#Parse('00-10-20'), [2000, 10, 20]
+
+Should be equal tlib#date#Parse('2000/2/1'), [2000, 1, 2]
+Should be equal tlib#date#Parse('2000/02/01'), [2000, 1, 2]
+Should be equal tlib#date#Parse('2000/20/10'), [2000, 10, 20]
+
+Should be equal tlib#date#Parse('00/2/1'), [2000, 1, 2]
+Should be equal tlib#date#Parse('00/02/01'), [2000, 1, 2]
+Should be equal tlib#date#Parse('00/20/10'), [2000, 10, 20]
+
+Should be equal tlib#date#Parse('2.1.2000'), [2000, 1, 2]
+Should be equal tlib#date#Parse('2. 1. 2000'), [2000, 1, 2]
+Should be equal tlib#date#Parse('02.01.2000'), [2000, 1, 2]
+Should be equal tlib#date#Parse('02. 01. 2000'), [2000, 1, 2]
+Should be equal tlib#date#Parse('20.10.2000'), [2000, 10, 20]
+Should be equal tlib#date#Parse('20. 10. 2000'), [2000, 10, 20]
+
+Should throw exception "tlib#date#Parse('2000-14-2')", 'TLib: Invalid date'
+Should throw exception "tlib#date#Parse('2000-011-02')", 'TLib: Invalid date'
+Should throw exception "tlib#date#Parse('2000-10-40')", 'TLib: Invalid date'
+Should throw exception "tlib#date#Parse('2000-10-0')", 'TLib: Invalid date'
+
+Should be equal tlib#date#Shift('2015-10-29', '1m'), '2015-11-29'
+Should be equal tlib#date#Shift('2015-11-29', '1m'), '2015-12-29'
+Should be equal tlib#date#Shift('2015-12-29', '1m'), '2016-01-29'
+Should be equal tlib#date#Shift('2016-01-29', '1m'), '2016-02-29'
+Should be equal tlib#date#Shift('2015-10-29', '2m'), '2015-12-29'
+Should be equal tlib#date#Shift('2015-10-29', '3m'), '2016-01-29'
+Should be equal tlib#date#Shift('2015-10-29', '4m'), '2016-02-29'
+Should be equal tlib#date#Shift('2015-12-30', '1d'), '2015-12-31'
+Should be equal tlib#date#Shift('2015-12-31', '1d'), '2016-01-01'
+Should be equal tlib#date#Shift('2015-12-30', '2d'), '2016-01-01'
+Should be equal tlib#date#Shift('2015-12-30', '3d'), '2016-01-02'
+
+Should be equal tlib#date#Shift('2016-03-16', '1b'), '2016-03-17'
+Should be equal tlib#date#Shift('2016-03-16', '2b'), '2016-03-18'
+Should be equal tlib#date#Shift('2016-03-16', '3b'), '2016-03-21'
+Should be equal tlib#date#Shift('2016-03-16', '4b'), '2016-03-22'
+Should be equal tlib#date#Shift('2016-03-16', '5b'), '2016-03-23'
+Should be equal tlib#date#Shift('2016-03-16', '6b'), '2016-03-24'
+Should be equal tlib#date#Shift('2016-03-16', '7b'), '2016-03-25'
+Should be equal tlib#date#Shift('2016-03-16', '8b'), '2016-03-28'
+
diff --git a/vim/bundle/tlib_vim/spec/tlib/dictionary.vim b/vim/bundle/tlib_vim/spec/tlib/dictionary.vim
new file mode 100644
index 0000000..52439e6
--- /dev/null
+++ b/vim/bundle/tlib_vim/spec/tlib/dictionary.vim
@@ -0,0 +1,28 @@
+" @Author: Tom Link (mailto:micathom AT gmail com?subject=[vim])
+" @Website: https://github.com/tomtom
+" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
+" @Created: 2016-04-03.
+" @Last Change: 2016-04-03.
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+
+
+SpecBegin 'title': 'tlib#dictionary'
+
+
+It should handle basic test cases for tlib#dictionary#Rev properly.
+
+Should be equal tlib#dictionary#Rev({}), {}
+Should be equal tlib#dictionary#Rev({1: 2, 3: 4}), {'2': '1', '4': '3'}
+Should be equal tlib#dictionary#Rev({1: '', 3: 4}, {'empty': '*'}), {'*': '1', '4': '3'}
+Should be equal tlib#dictionary#Rev({1: '', 3: 4}, {'use_string': 1}), {'''''': '1', '4': '3'}
+Should be equal tlib#dictionary#Rev({1: '', 3: 4}, {'use_string': 1, 'use_eval': 1}), {'''''': 1, '4': 3}
+Should be equal tlib#dictionary#Rev(tlib#dictionary#Rev({1: '', 3: 4}, {'use_string': 1}), {'use_eval': 1}), {1: '', 3: 4}
+Should be equal tlib#dictionary#Rev({1: 4, 2: 4}, {'values_as_list': 1}), {'4': ['1', '2']}
+Should be equal tlib#dictionary#Rev({1: 4, 2: 4}, {'values_as_list': 1, 'use_eval': 1}), {'4': [1, 2]}
+
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/vim/bundle/tlib_vim/spec/tlib/eval.vim b/vim/bundle/tlib_vim/spec/tlib/eval.vim
new file mode 100644
index 0000000..40c5138
--- /dev/null
+++ b/vim/bundle/tlib_vim/spec/tlib/eval.vim
@@ -0,0 +1,27 @@
+" @Author: Tom Link (mailto:micathom AT gmail com?subject=[vim])
+" @Website: https://github.com/tomtom
+" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
+" @Created: 2015-10-26.
+" @Last Change: 2015-10-26.
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+
+SpecBegin 'title': 'tlib#eval'
+
+
+let g:eval_a = {'foo': range(0, 5), 'd': {'a': range(0, 5)}}
+let g:eval_b = {'foo': range(6, 10), 'd': {'a': range(6, 10), 'b': 2}, 'bar': range(5)}
+let g:eval_a0 = deepcopy(g:eval_a)
+let g:eval_b0 = deepcopy(g:eval_b)
+let g:eval_c = {'foo': range(0, 10), 'd': {'a': range(0, 10), 'b': 2}, 'bar': range(5)}
+
+
+Should be equal tlib#eval#Extend(copy(g:eval_a), g:eval_b), g:eval_c
+Should be equal g:eval_a, g:eval_a0
+Should be equal g:eval_b, g:eval_b0
+
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/vim/bundle/tlib_vim/spec/tlib/file.vim b/vim/bundle/tlib_vim/spec/tlib/file.vim
new file mode 100755
index 0000000..f692abf
--- /dev/null
+++ b/vim/bundle/tlib_vim/spec/tlib/file.vim
@@ -0,0 +1,59 @@
+" @Author: Thomas Link (micathom AT gmail com?subject=[vim])
+" @Website: http://www.vim.org/account/profile.php?user_id=4037
+" @GIT: http://github.com/tomtom/vimtlib/
+" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
+" @Created: 2009-02-25.
+" @Last Change: 2010-04-03.
+" @Revision: 13
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+
+SpecBegin 'title': 'tlib/file',
+ \ 'sfile': 'autoload/tlib/file.vim'
+
+
+
+It should split filenames.
+Should be equal tlib#file#Split('foo/bar/filename.txt'), ['foo', 'bar', 'filename.txt']
+Should be equal tlib#file#Split('/foo/bar/filename.txt'), ['', 'foo', 'bar', 'filename.txt']
+Should be equal tlib#file#Split('ftp://foo/bar/filename.txt'), ['ftp:/', 'foo', 'bar', 'filename.txt']
+
+
+It should join filenames.
+Should be#Equal tlib#file#Join(['foo', 'bar']), 'foo/bar'
+Should be#Equal tlib#file#Join(['foo/', 'bar'], 1), 'foo/bar'
+Should be#Equal tlib#file#Join(['', 'bar']), '/bar'
+Should be#Equal tlib#file#Join(['/', 'bar'], 1), '/bar'
+Should be#Equal tlib#file#Join(['foo', 'bar', 'filename.txt']), 'foo/bar/filename.txt'
+Should be#Equal tlib#file#Join(['', 'foo', 'bar', 'filename.txt']), '/foo/bar/filename.txt'
+Should be#Equal tlib#file#Join(['ftp:/', 'foo', 'bar', 'filename.txt']), 'ftp://foo/bar/filename.txt'
+Should be#Equal tlib#file#Join(['ftp://', 'foo', 'bar', 'filename.txt'], 1), 'ftp://foo/bar/filename.txt'
+
+Should be equal tlib#file#Join(['foo', 'bar', 'filename.txt']), 'foo/bar/filename.txt'
+Should be equal tlib#file#Join(['', 'foo', 'bar', 'filename.txt']), '/foo/bar/filename.txt'
+Should be equal tlib#file#Join(['ftp:/', 'foo', 'bar', 'filename.txt']), 'ftp://foo/bar/filename.txt'
+
+
+It should construct relative path names.
+Should be#Equal tlib#file#Relative('foo/bar/filename.txt', 'foo'), 'bar/filename.txt'
+Should be#Equal tlib#file#Relative('foo/bar/filename.txt', 'foo/base'), '../bar/filename.txt'
+Should be#Equal tlib#file#Relative('filename.txt', 'foo/base'), '../../filename.txt'
+Should be#Equal tlib#file#Relative('/foo/bar/filename.txt', '/boo/base'), '../../foo/bar/filename.txt'
+Should be#Equal tlib#file#Relative('/bar/filename.txt', '/boo/base'), '../../bar/filename.txt'
+Should be#Equal tlib#file#Relative('/foo/bar/filename.txt', '/base'), '../foo/bar/filename.txt'
+Should be#Equal tlib#file#Relative('c:/bar/filename.txt', 'x:/boo/base'), 'c:/bar/filename.txt'
+
+
+Should be equal tlib#file#Relative('foo/bar/filename.txt', 'foo'), 'bar/filename.txt'
+Should be equal tlib#file#Relative('foo/bar/filename.txt', 'foo/base'), '../bar/filename.txt'
+Should be equal tlib#file#Relative('filename.txt', 'foo/base'), '../../filename.txt'
+Should be equal tlib#file#Relative('/foo/bar/filename.txt', '/boo/base'), '../../foo/bar/filename.txt'
+Should be equal tlib#file#Relative('/bar/filename.txt', '/boo/base'), '../../bar/filename.txt'
+Should be equal tlib#file#Relative('/foo/bar/filename.txt', '/base'), '../foo/bar/filename.txt'
+Should be equal tlib#file#Relative('c:/bar/filename.txt', 'x:/boo/base'), 'c:/bar/filename.txt'
+
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/vim/bundle/tlib_vim/spec/tlib/hash.vim b/vim/bundle/tlib_vim/spec/tlib/hash.vim
new file mode 100644
index 0000000..a2403a3
--- /dev/null
+++ b/vim/bundle/tlib_vim/spec/tlib/hash.vim
@@ -0,0 +1,58 @@
+" @Author: Tom Link (mailto:micathom AT gmail com?subject=[vim])
+" @Website: http://www.vim.org/account/profile.php?user_id=4037
+" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
+" @Revision: 31
+
+
+SpecBegin 'title': 'tlib#hash'
+
+
+It should calculate CRC32B checksums.
+
+let g:tlib_hash_use_crc32 = g:tlib#hash#use_crc32
+
+let g:tlib#hash#use_crc32 = 'ruby'
+Should be equal tlib#hash#CRC32B('The quick brown fox jumps over the lazy dog'), '414FA339'
+Should be equal tlib#hash#CRC32B('foo'), '8C736521'
+Should be equal tlib#hash#CRC32B('f'), '76D32BE0'
+
+let g:tlib#hash#use_crc32 = 'vim'
+Should be equal tlib#hash#CRC32B('The quick brown fox jumps over the lazy dog'), '414FA339'
+Should be equal tlib#hash#CRC32B('foo'), '8C736521'
+Should be equal tlib#hash#CRC32B('f'), '76D32BE0'
+
+
+function! s:CompareHash(text) "{{{3
+ if !empty(a:text)
+ exec 'It should calculate the crc32b checksum for:' a:text
+ let crc32ruby = tlib#hash#CRC32B_ruby(a:text)
+ let crc32vim = tlib#hash#CRC32B_vim(a:text)
+ exec 'Should be equal' string(crc32ruby) ',' string(crc32vim)
+ exec 'It should calculate the adler32 checksum for:' a:text
+ let adler32tlib = tlib#hash#Adler32_tlib(a:text)
+ let adler32vim = tlib#hash#Adler32_vim(a:text)
+ exec 'Should be equal' string(adler32tlib) ',' string(adler32vim)
+ endif
+endf
+
+redir => s:scriptnames
+silent scriptnames
+redir END
+for s:script in split(s:scriptnames, '\n')
+ let s:scriptfile = matchstr(s:script, '^\s*\d\+:\s\+\zs.*$')
+ call s:CompareHash(s:scriptfile)
+ try
+ let s:scriptlines = readfile(s:scriptfile)
+ call s:CompareHash(join(s:scriptlines, "\n"))
+ for s:scriptline in s:scriptlines
+ call s:CompareHash(s:scriptline)
+ endfor
+ catch /^Vim\%((\a\+)\)\=:E484/
+ endtry
+endfor
+unlet s:scriptnames, :script, s:scriptfile, s:scriptlines, s:scriptline
+delf s:CompareHash
+
+
+let g:tlib#hash#use_crc32 = g:tlib_hash_use_crc32
+
diff --git a/vim/bundle/tlib_vim/spec/tlib/input.vim b/vim/bundle/tlib_vim/spec/tlib/input.vim
new file mode 100755
index 0000000..f82aea6
--- /dev/null
+++ b/vim/bundle/tlib_vim/spec/tlib/input.vim
@@ -0,0 +1,127 @@
+" @Author: Tom Link (micathom AT gmail com?subject=[vim])
+" @Website: http://www.vim.org/account/profile.php?user_id=4037
+" @GIT: http://github.com/tomtom/vimtlib/
+" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
+" @Created: 2009-02-28.
+" @Last Change: 2009-03-14.
+" @Revision: 73
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+
+SpecBegin 'title': 'tlib: Input', 'scratch': '%',
+ \ 'after': ':unlet! g:spec_lib_rv',
+ \ 'options': [
+ \ 'vim',
+ \ ]
+
+
+let g:spec_tlib_list = [10, 20, 30, 40, 'a50', 'aa60', 'b70', 'ba80', 90]
+
+
+
+It should return empty values when the user presses <escape>.
+Replay :let g:spec_lib_rv = tlib#input#List('s', '', g:spec_tlib_list)\<cr>
+ \ \<Down>\<Down>\<esc>
+Should be#Equal g:spec_lib_rv, ''
+
+Replay :let g:spec_lib_rv = tlib#input#List('m', '', g:spec_tlib_list)\<cr>
+ \ \<Down>\<Down>\<esc>
+Should be#Equal g:spec_lib_rv, []
+
+Replay :let g:spec_lib_rv = tlib#input#List('si', '', g:spec_tlib_list)\<cr>
+ \ \<Down>\<Down>\<esc>
+Should be#Equal g:spec_lib_rv, 0
+
+
+
+It should pick an item from s-type list.
+Replay :let g:spec_lib_rv = tlib#input#List('s', '', g:spec_tlib_list)\<cr>
+ \ \<Down>\<Down>\<cr>
+Should be#Equal g:spec_lib_rv, 30
+
+
+
+It should return an index from si-type list.
+Replay :let g:spec_lib_rv = tlib#input#List('si', '', g:spec_tlib_list)\<cr>
+ \ \<Down>\<Down>\<cr>
+Should be#Equal g:spec_lib_rv, 3
+
+
+
+It should return a list from a m-type list.
+Replay :let g:spec_lib_rv = tlib#input#List('m', '', g:spec_tlib_list)\<cr>
+ \ \<Down>#\<Down>\<Down>\<cr>
+Should be#Equal sort(g:spec_lib_rv), [20, 40]
+
+Replay :let g:spec_lib_rv = tlib#input#List('m', '', g:spec_tlib_list)\<cr>
+ \ \<Down>\<S-Down>\<cr>
+Should be#Equal sort(g:spec_lib_rv), [20, 30]
+
+Replay :let g:spec_lib_rv = tlib#input#List('m', '', g:spec_tlib_list)\<cr>
+ \ \<Down>\<Down>\<S-up>\<cr>
+Should be#Equal sort(g:spec_lib_rv), [20, 30]
+
+
+
+It should return a list of indices from a mi-type list.
+Replay :let g:spec_lib_rv = tlib#input#List('mi', '', g:spec_tlib_list)\<cr>
+ \ \<Down>#\<Down>\<Down>\<cr>
+Should be#Equal sort(g:spec_lib_rv), [2, 4]
+
+Replay :let g:spec_lib_rv = tlib#input#List('mi', '', g:spec_tlib_list)\<cr>
+ \ \<Down>\<S-Down>\<cr>
+Should be#Equal sort(g:spec_lib_rv), [2, 3]
+
+Replay :let g:spec_lib_rv = tlib#input#List('mi', '', g:spec_tlib_list)\<cr>
+ \ \<Down>\<Down>\<S-up>\<cr>
+Should be#Equal sort(g:spec_lib_rv), [2, 3]
+
+
+
+It should filter items from a s-type list.
+Replay :let g:spec_lib_rv = tlib#input#List('s', '', g:spec_tlib_list)\<cr>
+ \ \<Down>a\<Down>\<cr>
+Should be#Equal g:spec_lib_rv, 'aa60'
+
+
+
+It should filter items from a si-type list.
+Replay :let g:spec_lib_rv = tlib#input#List('si', '', g:spec_tlib_list)\<cr>
+ \ \<Down>a\<Down>\<cr>
+Should be#Equal g:spec_lib_rv, 6
+
+
+
+It should filter items from a m-type list.
+Replay :let g:spec_lib_rv = tlib#input#List('m', '', g:spec_tlib_list)\<cr>
+ \ a\<Down>#\<Down>\<cr>
+Should be#Equal sort(g:spec_lib_rv), ['aa60', 'ba80']
+
+Replay :let g:spec_lib_rv = tlib#input#List('m', '', g:spec_tlib_list)\<cr>
+ \ a\<Down>\<S-Down>\<cr>
+Should be#Equal sort(g:spec_lib_rv), ['aa60', 'ba80']
+
+Replay :let g:spec_lib_rv = tlib#input#List('m', '', g:spec_tlib_list)\<cr>
+ \ a\<Down>\<Down>\<S-up>\<cr>
+Should be#Equal sort(g:spec_lib_rv), ['aa60', 'ba80']
+
+
+
+It should filter items from a mi-type list.
+Replay :let g:spec_lib_rv = tlib#input#List('mi', '', g:spec_tlib_list)\<cr>
+ \ a\<Down>#\<Down>\<cr>
+Should be#Equal sort(g:spec_lib_rv), [6, 8]
+
+Replay :let g:spec_lib_rv = tlib#input#List('mi', '', g:spec_tlib_list)\<cr>
+ \ a\<Down>\<S-Down>\<cr>
+Should be#Equal sort(g:spec_lib_rv), [6, 8]
+
+Replay :let g:spec_lib_rv = tlib#input#List('mi', '', g:spec_tlib_list)\<cr>
+ \ a\<Down>\<Down>\<S-up>\<cr>
+Should be#Equal sort(g:spec_lib_rv), [6, 8]
+
+
+
+let &cpo = s:save_cpo
diff --git a/vim/bundle/tlib_vim/spec/tlib/list.vim b/vim/bundle/tlib_vim/spec/tlib/list.vim
new file mode 100755
index 0000000..d4aae54
--- /dev/null
+++ b/vim/bundle/tlib_vim/spec/tlib/list.vim
@@ -0,0 +1,67 @@
+" @Author: Tom Link (mailto:micathom AT gmail com?subject=[vim])
+" @Website: http://www.vim.org/account/profile.php?user_id=4037
+" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
+" @Created: 2010-04-03.
+" @Last Change: 2010-04-03.
+" @Revision: 4
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+
+
+SpecBegin 'title': 'tlib: List'
+ " \, 'options': [vim, <+SET+>]
+ " \, 'sfile': '<+SCRIPT CONTEXT+>'
+ " \, 'scratch': '<+SCRATCH FILE+>'
+ " \, 'before': '<+BEFORE EX COMMANDS+>'
+ " \, 'after': '<+AFTER EX COMMANDS+>'
+ " \, 'cleanup': ['<+FUNCTION+>()']
+
+
+" List {{{2
+fun! Add(a,b)
+ return a:a + a:b
+endf
+
+Should be equal tlib#list#Inject([], 0, function('Add')), 0
+Should be equal tlib#list#Inject([1,2,3], 0, function('Add')), 6
+
+Should be equal tlib#list#Compact([]), []
+Should be equal tlib#list#Compact([0,1,2,3,[], {}, ""]), [1,2,3]
+
+Should be equal tlib#list#Flatten([]), []
+Should be equal tlib#list#Flatten([1,2,3]), [1,2,3]
+Should be equal tlib#list#Flatten([1,2, [1,2,3], 3]), [1,2,1,2,3,3]
+Should be equal tlib#list#Flatten([0,[1,2,[3,""]]]), [0,1,2,3,""]
+
+Should be equal tlib#list#FindAll([1,2,3], 'v:val >= 2'), [2,3]
+Should be equal tlib#list#FindAll([1,2,3], 'v:val >= 2', 'v:val * 10'), [20,30]
+
+Should be equal tlib#list#Find([1,2,3], 'v:val >= 2'), 2
+Should be equal tlib#list#Find([1,2,3], 'v:val >= 2', 0, 'v:val * 10'), 20
+Should be equal tlib#list#Find([1,2,3], 'v:val >= 5', 10), 10
+
+Should be equal tlib#list#Any([1,2,3], 'v:val >= 2'), 1
+Should be equal tlib#list#Any([1,2,3], 'v:val >= 5'), 0
+
+Should be equal tlib#list#All([1,2,3], 'v:val < 5'), 1
+Should be equal tlib#list#All([1,2,3], 'v:val >= 2'), 0
+
+Should be equal tlib#list#Remove([1,2,1,2], 2), [1,1,2]
+Should be equal tlib#list#RemoveAll([1,2,1,2], 2), [1,1]
+
+Should be equal tlib#list#Zip([[1,2,3], [4,5,6]]), [[1,4], [2,5], [3,6]]
+Should be equal tlib#list#Zip([[1,2,3], [4,5,6,7]]), [[1,4], [2,5], [3,6], ['', 7]]
+Should be equal tlib#list#Zip([[1,2,3], [4,5,6,7]], -1), [[1,4], [2,5], [3,6], [-1,7]]
+Should be equal tlib#list#Zip([[1,2,3,7], [4,5,6]], -1), [[1,4], [2,5], [3,6], [7,-1]]
+
+
+Should be equal tlib#list#Uniq([]), []
+Should be equal tlib#list#Uniq([1,1]), [1]
+Should be equal tlib#list#Uniq([1,2,2,3,2,3,4,2,1,7,2,3,2,3,7]), [1,2,3,4,7]
+
+
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/vim/bundle/tlib_vim/spec/tlib/rx.vim b/vim/bundle/tlib_vim/spec/tlib/rx.vim
new file mode 100755
index 0000000..fc28103
--- /dev/null
+++ b/vim/bundle/tlib_vim/spec/tlib/rx.vim
@@ -0,0 +1,27 @@
+" @Author: Tom Link (mailto:micathom AT gmail com?subject=[vim])
+" @Website: http://www.vim.org/account/profile.php?user_id=4037
+" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
+" @Created: 2010-04-03.
+" @Last Change: 2010-04-03.
+" @Revision: 2
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+
+
+SpecBegin 'title': 'tlib#rx'
+
+
+for c in split('^$.*+\()|{}[]~', '\zs')
+ let s = printf('%sfoo%sbar%s', c, c, c)
+ Should be like s, '\m^'. tlib#rx#Escape(s, 'm') .'$'
+ Should be like s, '\M^'. tlib#rx#Escape(s, 'M') .'$'
+ Should be like s, '\v^'. tlib#rx#Escape(s, 'v') .'$'
+ Should be like s, '\V\^'. tlib#rx#Escape(s, 'V') .'\$'
+endfor
+
+
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/vim/bundle/tlib_vim/spec/tlib/string.vim b/vim/bundle/tlib_vim/spec/tlib/string.vim
new file mode 100755
index 0000000..4329d94
--- /dev/null
+++ b/vim/bundle/tlib_vim/spec/tlib/string.vim
@@ -0,0 +1,29 @@
+" @Author: Tom Link (mailto:micathom AT gmail com?subject=[vim])
+" @Website: http://www.vim.org/account/profile.php?user_id=4037
+" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
+" @Created: 2010-04-03.
+" @Last Change: 2010-04-03.
+" @Revision: 4
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+
+
+SpecBegin 'title': 'tlib#string'
+
+Should be equal tlib#string#RemoveBackslashes('foo bar'), 'foo bar'
+Should be equal tlib#string#RemoveBackslashes('foo\ bar'), 'foo bar'
+Should be equal tlib#string#RemoveBackslashes('foo\ \\bar'), 'foo \\bar'
+Should be equal tlib#string#RemoveBackslashes('foo\ \\bar', '\ '), 'foo \bar'
+
+
+Should be equal tlib#string#Count("fooo", "o"), 3
+Should be equal tlib#string#Count("***", "\\*"), 3
+Should be equal tlib#string#Count("***foo", "\\*"), 3
+Should be equal tlib#string#Count("foo***", "\\*"), 3
+
+
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/vim/bundle/tlib_vim/spec/tlib/url.vim b/vim/bundle/tlib_vim/spec/tlib/url.vim
new file mode 100755
index 0000000..80783e9
--- /dev/null
+++ b/vim/bundle/tlib_vim/spec/tlib/url.vim
@@ -0,0 +1,23 @@
+" @Author: Tom Link (mailto:micathom AT gmail com?subject=[vim])
+" @Website: http://www.vim.org/account/profile.php?user_id=4037
+" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
+" @Created: 2010-04-03.
+" @Last Change: 2010-04-03.
+" @Revision: 2
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+
+
+SpecBegin 'title': 'tlib#url'
+
+Should be equal tlib#url#Decode('http://example.com/foo+bar%25bar'), 'http://example.com/foo bar%bar'
+Should be equal tlib#url#Decode('Hello%20World.%20%20Good%2c%20bye.'), 'Hello World. Good, bye.'
+
+Should be equal tlib#url#Encode('foo bar%bar'), 'foo+bar%%bar'
+Should be equal tlib#url#Encode('Hello World. Good, bye.'), 'Hello+World.+Good%2c+bye.'
+
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/vim/bundle/tlib_vim/spec/tlib/var.vim b/vim/bundle/tlib_vim/spec/tlib/var.vim
new file mode 100755
index 0000000..28e3fac
--- /dev/null
+++ b/vim/bundle/tlib_vim/spec/tlib/var.vim
@@ -0,0 +1,37 @@
+" @Author: Tom Link (mailto:micathom AT gmail com?subject=[vim])
+" @Website: http://www.vim.org/account/profile.php?user_id=4037
+" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
+" @Created: 2010-04-03.
+" @Last Change: 2010-04-03.
+" @Revision: 2
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+
+
+SpecBegin 'title': 'tlib#var'
+
+
+let g:foo = 1
+let g:bar = 2
+let b:bar = 3
+let s:bar = 4
+
+Should be equal tlib#var#Get('bar', 'bg'), 3
+Should be equal tlib#var#Get('bar', 'g'), 2
+Should be equal tlib#var#Get('foo', 'bg'), 1
+Should be equal tlib#var#Get('foo', 'g'), 1
+Should be equal tlib#var#Get('none', 'l'), ''
+
+Should be equal eval(tlib#var#EGet('bar', 'bg')), 3
+Should be equal eval(tlib#var#EGet('bar', 'g')), 2
+" Should be equal eval(tlib#var#EGet('bar', 'sg')), 4
+Should be equal eval(tlib#var#EGet('foo', 'bg')), 1
+Should be equal eval(tlib#var#EGet('foo', 'g')), 1
+Should be equal eval(tlib#var#EGet('none', 'l')), ''
+
+
+
+let &cpo = s:save_cpo
+unlet s:save_cpo