PageRenderTime 57ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/sources_non_forked/tlib/test/tlib.vim

https://gitlab.com/jeichert/vimrc
Vim Script | 219 lines | 147 code | 55 blank | 17 comment | 2 complexity | 1bf743ebaa50d0bc95857611df7dd579 MD5 | raw file
  1. " tLib.vim
  2. " @Author: Thomas Link (mailto:micathom AT gmail com?subject=vim-tLib)
  3. " @Website: http://www.vim.org/account/profile.php?user_id=4037
  4. " @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
  5. " @Created: 2006-12-17.
  6. " @Last Change: 2008-11-23.
  7. " @Revision: 129
  8. if !exists("loaded_tassert")
  9. echoerr 'tAssert (vimscript #1730) is required'
  10. endif
  11. TAssertBegin! "tlib"
  12. " List {{{2
  13. fun! Add(a,b)
  14. return a:a + a:b
  15. endf
  16. TAssert IsEqual(tlib#list#Inject([], 0, function('Add')), 0)
  17. TAssert IsEqual(tlib#list#Inject([1,2,3], 0, function('Add')), 6)
  18. delfunction Add
  19. TAssert IsEqual(tlib#list#Compact([]), [])
  20. TAssert IsEqual(tlib#list#Compact([0,1,2,3,[], {}, ""]), [1,2,3])
  21. TAssert IsEqual(tlib#list#Flatten([]), [])
  22. TAssert IsEqual(tlib#list#Flatten([1,2,3]), [1,2,3])
  23. TAssert IsEqual(tlib#list#Flatten([1,2, [1,2,3], 3]), [1,2,1,2,3,3])
  24. TAssert IsEqual(tlib#list#Flatten([0,[1,2,[3,""]]]), [0,1,2,3,""])
  25. TAssert IsEqual(tlib#list#FindAll([1,2,3], 'v:val >= 2'), [2,3])
  26. TAssert IsEqual(tlib#list#FindAll([1,2,3], 'v:val >= 2', 'v:val * 10'), [20,30])
  27. TAssert IsEqual(tlib#list#Find([1,2,3], 'v:val >= 2'), 2)
  28. TAssert IsEqual(tlib#list#Find([1,2,3], 'v:val >= 2', 0, 'v:val * 10'), 20)
  29. TAssert IsEqual(tlib#list#Find([1,2,3], 'v:val >= 5', 10), 10)
  30. TAssert IsEqual(tlib#list#Any([1,2,3], 'v:val >= 2'), 1)
  31. TAssert IsEqual(tlib#list#Any([1,2,3], 'v:val >= 5'), 0)
  32. TAssert IsEqual(tlib#list#All([1,2,3], 'v:val < 5'), 1)
  33. TAssert IsEqual(tlib#list#All([1,2,3], 'v:val >= 2'), 0)
  34. TAssert IsEqual(tlib#list#Remove([1,2,1,2], 2), [1,1,2])
  35. TAssert IsEqual(tlib#list#RemoveAll([1,2,1,2], 2), [1,1])
  36. TAssert IsEqual(tlib#list#Zip([[1,2,3], [4,5,6]]), [[1,4], [2,5], [3,6]])
  37. TAssert IsEqual(tlib#list#Zip([[1,2,3], [4,5,6,7]]), [[1,4], [2,5], [3,6], ['', 7]])
  38. TAssert IsEqual(tlib#list#Zip([[1,2,3], [4,5,6,7]], -1), [[1,4], [2,5], [3,6], [-1,7]])
  39. TAssert IsEqual(tlib#list#Zip([[1,2,3,7], [4,5,6]], -1), [[1,4], [2,5], [3,6], [7,-1]])
  40. " Vars {{{2
  41. let g:foo = 1
  42. let g:bar = 2
  43. let b:bar = 3
  44. let s:bar = 4
  45. TAssert IsEqual(tlib#var#Get('bar', 'bg'), 3)
  46. TAssert IsEqual(tlib#var#Get('bar', 'g'), 2)
  47. TAssert IsEqual(tlib#var#Get('foo', 'bg'), 1)
  48. TAssert IsEqual(tlib#var#Get('foo', 'g'), 1)
  49. TAssert IsEqual(tlib#var#Get('none', 'l'), '')
  50. TAssert IsEqual(eval(tlib#var#EGet('bar', 'bg')), 3)
  51. TAssert IsEqual(eval(tlib#var#EGet('bar', 'g')), 2)
  52. " TAssert IsEqual(eval(tlib#var#EGet('bar', 'sg')), 4)
  53. TAssert IsEqual(eval(tlib#var#EGet('foo', 'bg')), 1)
  54. TAssert IsEqual(eval(tlib#var#EGet('foo', 'g')), 1)
  55. TAssert IsEqual(eval(tlib#var#EGet('none', 'l')), '')
  56. unlet g:foo
  57. unlet g:bar
  58. unlet b:bar
  59. " Filenames {{{2
  60. TAssert IsEqual(tlib#file#Split('foo/bar/filename.txt'), ['foo', 'bar', 'filename.txt'])
  61. TAssert IsEqual(tlib#file#Split('/foo/bar/filename.txt'), ['', 'foo', 'bar', 'filename.txt'])
  62. TAssert IsEqual(tlib#file#Split('ftp://foo/bar/filename.txt'), ['ftp:/', 'foo', 'bar', 'filename.txt'])
  63. TAssert IsEqual(tlib#file#Join(['foo', 'bar', 'filename.txt']), 'foo/bar/filename.txt')
  64. TAssert IsEqual(tlib#file#Join(['', 'foo', 'bar', 'filename.txt']), '/foo/bar/filename.txt')
  65. TAssert IsEqual(tlib#file#Join(['ftp:/', 'foo', 'bar', 'filename.txt']), 'ftp://foo/bar/filename.txt')
  66. TAssert IsEqual(tlib#file#Relative('foo/bar/filename.txt', 'foo'), 'bar/filename.txt')
  67. TAssert IsEqual(tlib#file#Relative('foo/bar/filename.txt', 'foo/base'), '../bar/filename.txt')
  68. TAssert IsEqual(tlib#file#Relative('filename.txt', 'foo/base'), '../../filename.txt')
  69. TAssert IsEqual(tlib#file#Relative('/foo/bar/filename.txt', '/boo/base'), '../../foo/bar/filename.txt')
  70. TAssert IsEqual(tlib#file#Relative('/bar/filename.txt', '/boo/base'), '../../bar/filename.txt')
  71. TAssert IsEqual(tlib#file#Relative('/foo/bar/filename.txt', '/base'), '../foo/bar/filename.txt')
  72. TAssert IsEqual(tlib#file#Relative('c:/bar/filename.txt', 'x:/boo/base'), 'c:/bar/filename.txt')
  73. " Prototype-based programming {{{2
  74. let test = tlib#Test#New()
  75. TAssert test.IsA('Test')
  76. TAssert !test.IsA('foo')
  77. TAssert test.RespondTo('RespondTo')
  78. TAssert !test.RespondTo('RespondToNothing')
  79. let test1 = tlib#Test#New()
  80. TAssert test.IsRelated(test1)
  81. let testworld = tlib#World#New()
  82. TAssert !test.IsRelated(testworld)
  83. let testc = tlib#TestChild#New()
  84. TAssert IsEqual(testc.Dummy(), 'TestChild.vim')
  85. TAssert IsEqual(testc.Super('Dummy', []), 'Test.vim')
  86. " Optional arguments {{{2
  87. function! TestGetArg(...) "{{{3
  88. exec tlib#arg#Get(1, 'foo', 1)
  89. return foo
  90. endf
  91. function! TestGetArg1(...) "{{{3
  92. exec tlib#arg#Get(1, 'foo', 1, '!= ""')
  93. return foo
  94. endf
  95. TAssert IsEqual(TestGetArg(), 1)
  96. TAssert IsEqual(TestGetArg(''), '')
  97. TAssert IsEqual(TestGetArg(2), 2)
  98. TAssert IsEqual(TestGetArg1(), 1)
  99. TAssert IsEqual(TestGetArg1(''), 1)
  100. TAssert IsEqual(TestGetArg1(2), 2)
  101. function! TestArgs(...) "{{{3
  102. exec tlib#arg#Let([['foo', "o"], ['bar', 2]])
  103. return repeat(foo, bar)
  104. endf
  105. TAssert IsEqual(TestArgs(), 'oo')
  106. TAssert IsEqual(TestArgs('a'), 'aa')
  107. TAssert IsEqual(TestArgs('a', 3), 'aaa')
  108. function! TestArgs1(...) "{{{3
  109. exec tlib#arg#Let(['foo', ['bar', 2]])
  110. return repeat(foo, bar)
  111. endf
  112. TAssert IsEqual(TestArgs1(), '')
  113. TAssert IsEqual(TestArgs1('a'), 'aa')
  114. TAssert IsEqual(TestArgs1('a', 3), 'aaa')
  115. function! TestArgs2(...) "{{{3
  116. exec tlib#arg#Let(['foo', 'bar'], 1)
  117. return repeat(foo, bar)
  118. endf
  119. TAssert IsEqual(TestArgs2(), '1')
  120. TAssert IsEqual(TestArgs2('a'), 'a')
  121. TAssert IsEqual(TestArgs2('a', 3), 'aaa')
  122. function! TestArgs3(...)
  123. TVarArg ['a', 1], 'b'
  124. return a . b
  125. endf
  126. TAssert IsEqual(TestArgs3(), '1')
  127. TAssert IsEqual(TestArgs3('a'), 'a')
  128. TAssert IsEqual(TestArgs3('a', 3), 'a3')
  129. delfunction TestGetArg
  130. delfunction TestGetArg1
  131. delfunction TestArgs
  132. delfunction TestArgs1
  133. delfunction TestArgs2
  134. delfunction TestArgs3
  135. " Strings {{{2
  136. TAssert IsString(tlib#string#RemoveBackslashes('foo bar'))
  137. TAssert IsEqual(tlib#string#RemoveBackslashes('foo bar'), 'foo bar')
  138. TAssert IsEqual(tlib#string#RemoveBackslashes('foo\ bar'), 'foo bar')
  139. TAssert IsEqual(tlib#string#RemoveBackslashes('foo\ \\bar'), 'foo \\bar')
  140. TAssert IsEqual(tlib#string#RemoveBackslashes('foo\ \\bar', '\ '), 'foo \bar')
  141. " Regexp {{{2
  142. for c in split('^$.*+\()|{}[]~', '\zs')
  143. let s = printf('%sfoo%sbar%s', c, c, c)
  144. TAssert (s =~ '\m^'. tlib#rx#Escape(s, 'm') .'$')
  145. TAssert (s =~ '\M^'. tlib#rx#Escape(s, 'M') .'$')
  146. TAssert (s =~ '\v^'. tlib#rx#Escape(s, 'v') .'$')
  147. TAssert (s =~ '\V\^'. tlib#rx#Escape(s, 'V') .'\$')
  148. endfor
  149. " Encode, decode
  150. TAssert IsEqual(tlib#url#Decode('http://example.com/foo+bar%25bar'), 'http://example.com/foo bar%bar')
  151. TAssert IsEqual(tlib#url#Decode('Hello%20World.%20%20Good%2c%20bye.'), 'Hello World. Good, bye.')
  152. TAssert IsEqual(tlib#url#Encode('foo bar%bar'), 'foo+bar%%bar')
  153. TAssert IsEqual(tlib#url#Encode('Hello World. Good, bye.'), 'Hello+World.+Good%2c+bye.')
  154. TAssertEnd test test1 testc testworld
  155. TAssert IsEqual(tlib#string#Count("fooo", "o"), 3)
  156. TAssert IsEqual(tlib#string#Count("***", "\\*"), 3)
  157. TAssert IsEqual(tlib#string#Count("***foo", "\\*"), 3)
  158. TAssert IsEqual(tlib#string#Count("foo***", "\\*"), 3)
  159. finish "{{{1
  160. " Input {{{2
  161. echo tlib#input#List('s', 'Test', ['barfoobar', 'barFoobar'])
  162. echo tlib#input#List('s', 'Test', ['barfoobar', 'bar foo bar', 'barFoobar'])
  163. echo tlib#input#List('s', 'Test', ['barfoobar', 'bar1Foo1bar', 'barFoobar'])
  164. echo tlib#input#EditList('Test', ['bar1', 'bar2', 'bar3', 'foo1', 'foo2', 'foo3'])