|
1 | 1 | source autoload/javacomplete.vim
|
2 | 2 | source autoload/java_parser.vim
|
3 | 3 |
|
4 |
| -function! SID() abort |
| 4 | +function! g:SID(file) abort |
5 | 5 | redir => l:scriptnames
|
6 | 6 | silent scriptnames
|
7 | 7 | redir END
|
8 | 8 | for line in split(l:scriptnames, '\n')
|
9 | 9 | let [l:sid, l:path] = matchlist(line, '^\s*\(\d\+\):\s*\(.*\)$')[1:2]
|
10 |
| - if l:path =~# '\<autoload[/\\]javacomplete\.vim$' |
| 10 | + if l:path =~# '\<autoload[/\\]javacomplete[/\\]'.a:file.'\.vim$' |
11 | 11 | return '<SNR>' . l:sid . '_'
|
12 | 12 | endif
|
13 | 13 | endfor
|
14 | 14 | endfunction
|
15 |
| -call vspec#hint({'sid': 'SID()', 'scope': 'SScope()'}) |
16 |
| - |
17 |
| - |
18 |
| -describe 'javacomplete-test' |
19 |
| - it 'CountDims test' |
20 |
| - Expect Call('s:CountDims', '') == 0 |
21 |
| - Expect Call('s:CountDims', 'String[]') == 1 |
22 |
| - Expect Call('s:CountDims', 'String[][]') == 2 |
23 |
| - Expect Call('s:CountDims', 'String[][][][][]') == 5 |
24 |
| - Expect Call('s:CountDims', 'String]') == 1 |
25 |
| - Expect Call('s:CountDims', 'String[') == 0 |
26 |
| - Expect Call('s:CountDims', 'String[[') == 0 |
27 |
| - Expect Call('s:CountDims', 'String]]') == 1 |
28 |
| - end |
29 |
| - |
30 |
| - it 'CollectFQNs test' |
31 |
| - Expect Call('s:CollectFQNs', 'List', 'kg.ash.foo', '') == ['kg.ash.foo.List','java.lang.List', 'java.lang.Object'] |
32 |
| - Expect Call('s:CollectFQNs', 'java.util.List', 'kg.ash.foo', '') == ['java.util.List'] |
33 |
| - |
34 |
| - new |
35 |
| - put ='import java.util.List;' |
36 |
| - Expect Call('s:CollectFQNs', 'List', '', '') == ['java.util.List'] |
37 |
| - |
38 |
| - new |
39 |
| - put ='import java.util.*;' |
40 |
| - put ='import java.foo.*;' |
41 |
| - Expect Call('s:CollectFQNs', 'List', '', '') == ['List', 'java.lang.List', 'java.util.List', 'java.foo.List', 'java.lang.Object'] |
42 |
| - Expect Call('s:CollectFQNs', 'List', 'kg.ash.foo', '') == ['kg.ash.foo.List', 'java.lang.List', 'java.util.List', 'java.foo.List', 'java.lang.Object'] |
43 |
| - end |
44 |
| - |
45 |
| - it 'GetClassNameWithScope test' |
46 |
| - new |
47 |
| - put ='ArrayLi' |
48 |
| - Expect Call('s:GetClassNameWithScope') == 'ArrayLi' |
49 |
| - |
50 |
| - new |
51 |
| - put ='ArrayList ' |
52 |
| - Expect Call('s:GetClassNameWithScope') == 'ArrayList' |
53 |
| - |
54 |
| - new |
55 |
| - put ='ArrayList l' |
56 |
| - call cursor(0, 10) |
57 |
| - Expect Call('s:GetClassNameWithScope') == 'ArrayList' |
58 |
| - |
59 |
| - new |
60 |
| - put ='ArrayList<String> l' |
61 |
| - call cursor(0, 11) |
62 |
| - Expect Call('s:GetClassNameWithScope') == 'String' |
63 |
| - |
64 |
| - new |
65 |
| - put ='List l = new ArrayList<String>()' |
66 |
| - call cursor(0, 1) |
67 |
| - Expect Call('s:GetClassNameWithScope') == 'List' |
68 |
| - call cursor(0, 14) |
69 |
| - Expect Call('s:GetClassNameWithScope') == 'ArrayList' |
70 |
| - call cursor(0, 31) |
71 |
| - Expect Call('s:GetClassNameWithScope') == '' |
72 |
| - end |
73 |
| - |
74 |
| - it 'AddImport test' |
75 |
| - new |
76 |
| - put! ='package kg.ash.foo;' |
77 |
| - |
78 |
| - call Call('s:AddImport', 'java.util.List') |
79 |
| - Expect getline(3) == 'import java.util.List;' |
80 |
| - |
81 |
| - call Call('s:AddImport', 'java.util.ArrayList') |
82 |
| - Expect getline(3) == 'import java.util.List;' |
83 |
| - |
84 |
| - call Call('s:AddImport', 'foo.bar.Baz') |
85 |
| - Expect getline(5) == 'import foo.bar.Baz;' |
86 |
| - |
87 |
| - call Call('s:AddImport', 'zoo.bar.Baz') |
88 |
| - Expect getline(5) == 'import foo.bar.Baz;' |
89 |
| - |
90 |
| - new |
91 |
| - |
92 |
| - call Call('s:AddImport', 'java.util.List') |
93 |
| - Expect getline(2) == 'import java.util.List;' |
94 |
| - |
95 |
| - call Call('s:AddImport', 'java.util.ArrayList') |
96 |
| - Expect getline(3) == 'import java.util.ArrayList;' |
97 |
| - |
98 |
| - call Call('s:AddImport', 'foo.bar.Baz') |
99 |
| - Expect getline(4) == 'import foo.bar.Baz;' |
100 |
| - |
101 |
| - call Call('s:AddImport', 'zoo.bar.Baz') |
102 |
| - Expect getline(4) == 'import foo.bar.Baz;' |
103 |
| - |
104 |
| - end |
105 |
| - |
106 |
| - it 'ParseExpr test' |
107 |
| - Expect Call('s:ParseExpr', 'var') == ['var'] |
108 |
| - Expect Call('s:ParseExpr', 'var.') == ['var'] |
109 |
| - Expect Call('s:ParseExpr', 'var.method().') == ['var', 'method()'] |
110 |
| - Expect Call('s:ParseExpr', 'var.vari') == ['var', 'vari'] |
111 |
| - Expect Call('s:ParseExpr', 'var.vari.') == ['var', 'vari'] |
112 |
| - Expect Call('s:ParseExpr', 'var[].') == ['var[]'] |
113 |
| - Expect Call('s:ParseExpr', '(Boolean) var.') == [' var'] |
114 |
| - Expect Call('s:ParseExpr', '((Boolean) var).') == ['(Boolean)obj.'] |
115 |
| - Expect Call('s:ParseExpr', '((Boolean) var).method()') == ['(Boolean)obj.', 'method()'] |
116 |
| - Expect Call('s:ParseExpr', 'System.out::') == ['System', 'out'] |
117 |
| - Expect Call('s:ParseExpr', 'System.out:') == ['System', 'out'] |
118 |
| - end |
119 |
| - |
120 |
| - it 'ExtractCleanExpr test' |
121 |
| - Expect Call('s:ExtractCleanExpr', 'var') == 'var' |
122 |
| - Expect Call('s:ExtractCleanExpr', ' var.') == 'var.' |
123 |
| - Expect Call('s:ExtractCleanExpr', 'var [ 0 ].') == 'var[0].' |
124 |
| - Expect Call('s:ExtractCleanExpr', 'Boolean b = ((Boolean) var).method()') == '((Boolean)var).method()' |
125 |
| - Expect Call('s:ExtractCleanExpr', 'List<String>::') == 'List<String>::' |
126 |
| - end |
127 |
| - |
128 |
| - it 'GetPackageName test' |
129 |
| - |
130 |
| - Expect Call('s:GetPackageName') == '' |
131 |
| - |
132 |
| - new |
133 |
| - put ='package foo.bar.baz' |
134 |
| - Expect Call('s:GetPackageName') == '' |
135 |
| - |
136 |
| - new |
137 |
| - put ='package foo.bar.baz;' |
138 |
| - Expect Call('s:GetPackageName') == 'foo.bar.baz' |
139 |
| - end |
140 |
| - |
141 |
| - it 'Regexps test' |
142 |
| - let reTypeArgument = Ref('s:RE_TYPE_ARGUMENT') |
143 |
| - let reTypeArgumentExtends = Ref('s:RE_TYPE_ARGUMENT_EXTENDS') |
144 |
| - Expect 'Integer[]' =~ reTypeArgument |
145 |
| - Expect 'Integer[]' !~ reTypeArgumentExtends |
146 |
| - Expect '? super Integer[]' =~ reTypeArgument |
147 |
| - Expect '? super Integer[]' =~ reTypeArgumentExtends |
148 |
| - |
149 |
| - let qualid = Ref('s:RE_QUALID') |
150 |
| - Expect 'java.util.function.ToIntFunction' =~ '^\s*' . qualid . '\s*$' |
151 |
| - Expect Call('s:HasKeyword', 'java.util.function.ToIntFunction') == 0 |
152 |
| - end |
153 |
| - |
154 |
| - it 'CollectTypeArguments test' |
155 |
| - Expect Call('s:CollectTypeArguments', '', '', '') == '' |
156 |
| - |
157 |
| - Expect Call('s:CollectTypeArguments', 'Integer', '', '') == '<(Integer|java.lang.Integer|java.lang.Object)>' |
158 |
| - Expect Call('s:CollectTypeArguments', 'Integer[]', '', '') == '<(Integer[]|java.lang.Integer[]|java.lang.Object)>' |
159 |
| - Expect Call('s:CollectTypeArguments', '? super Integer[]', '', '') == '<(Integer[]|java.lang.Integer[]|java.lang.Object)>' |
160 |
| - |
161 |
| - new |
162 |
| - put ='import java.util.List;' |
163 |
| - put ='import java.util.HashMap;' |
164 |
| - Expect Call('s:CollectTypeArguments', 'List<HashMap<String,BigDecimal>>', '', '') == '<java.util.List<HashMap<String,BigDecimal>>>' |
165 |
| - Expect Call('s:CollectTypeArguments', 'HashMap<String,BigDecimal>', '', '') == '<java.util.HashMap<String,BigDecimal>>' |
166 |
| - Expect Call('s:CollectTypeArguments', 'String,BigDecimal', '', '') == '<(String|java.lang.String|java.lang.Object),(BigDecimal|java.lang.BigDecimal|java.lang.Object)>' |
167 |
| - put ='import java.math.BigDecimal;' |
168 |
| - Expect Call('s:CollectTypeArguments', 'String,BigDecimal', '', '') == '<(String|java.lang.String|java.lang.Object),java.math.BigDecimal>' |
169 |
| - |
170 |
| - Expect Call('s:CollectTypeArguments', 'MyClass', '', '') == '<(MyClass|java.lang.MyClass|java.lang.Object)>' |
171 |
| - Expect Call('s:CollectTypeArguments', 'MyClass', 'foo.bar.baz', '') == '<(foo.bar.baz.MyClass|java.lang.MyClass|java.lang.Object)>' |
172 |
| - end |
173 |
| - |
174 |
| - it 'Lambdas named argument search test' |
175 |
| - let tree = Call('javacomplete#parse', 't/data/LambdaNamedClass.java') |
176 |
| - |
177 |
| - let result = Call('s:SearchNameInAST', tree, 't', 453, 1) |
178 |
| - Expect result[0].type.name == 'String' |
179 |
| - |
180 |
| - let result = Call('s:SearchNameInAST', tree, 'd', 467, 1) |
181 |
| - Expect result[0].type.name == 'BigDecimal' |
182 |
| - end |
183 |
| - |
184 |
| - it 'Lambdas anonym argument search test' |
185 |
| - let tree = Call('javacomplete#parse', 't/data/LambdaAnonClass.java') |
186 |
| - |
187 |
| - let result = Call('s:SearchNameInAST', tree, 't', 388, 1) |
188 |
| - Expect result[0].tag == 'LAMBDA' |
189 |
| - Expect result[0].args.tag == 'IDENT' |
190 |
| - Expect result[0].args.name == 't' |
191 |
| - |
192 |
| - let result = Call('s:SearchNameInAST', tree, 'd', 463, 1) |
193 |
| - Expect result[1].tag == 'LAMBDA' |
194 |
| - Expect result[1].args[0].tag == 'IDENT' |
195 |
| - Expect result[1].args[0].name == 't' |
196 |
| - end |
197 |
| - |
198 |
| - it 'Lambdas in method return' |
199 |
| - let tree = Call('javacomplete#parse', 't/data/LambdaReturnClass.java') |
200 |
| - |
201 |
| - let result = Call('s:SearchNameInAST', tree, 'p', 171, 1) |
202 |
| - Expect result[0].tag == 'LAMBDA' |
203 |
| - Expect result[0].args.tag == 'IDENT' |
204 |
| - Expect result[0].args.name == 'p' |
205 |
| - end |
206 |
| - |
207 |
| - it 'SplitTypeArguments test' |
208 |
| - Expect Call('s:SplitTypeArguments', 'java.util.List<Integer>') == ['java.util.List', 'Integer'] |
209 |
| - Expect Call('s:SplitTypeArguments', 'java.util.List<java.lang.Integer>') == ['java.util.List', 'java.lang.Integer'] |
210 |
| - Expect Call('s:SplitTypeArguments', 'java.util.HashMap<Integer,String>') == ['java.util.HashMap', 'Integer,String'] |
211 |
| - Expect Call('s:SplitTypeArguments', 'java.util.List<? extends java.lang.Integer[]>') == ['java.util.List', '? extends java.lang.Integer[]'] |
212 |
| - Expect Call('s:SplitTypeArguments', 'List<? extends java.lang.Integer[]>') == ['List', '? extends java.lang.Integer[]'] |
213 |
| - Expect Call('s:SplitTypeArguments', 'java.util.HashMap<? super Integer,? extends String>') == ['java.util.HashMap', '? super Integer,? extends String'] |
214 |
| - Expect Call('s:SplitTypeArguments', 'java.util.function.ToIntFunction<? super java.lang.Integer[]>') == ['java.util.function.ToIntFunction', '? super java.lang.Integer[]'] |
215 |
| - Expect Call('s:SplitTypeArguments', 'java.lang.Class<?>') == ['java.lang.Class', 0] |
216 |
| - end |
217 |
| - |
218 |
| - it 'CleanFQN test' |
219 |
| - Expect Call('s:CleanFQN', '') == '' |
220 |
| - Expect Call('s:CleanFQN', 'java.lang.Object') == 'Object' |
221 |
| - Expect Call('s:CleanFQN', 'java.lang.Object java.util.HashMap.get()') == 'Object get()' |
222 |
| - Expect Call('s:CleanFQN', 'public java.math.BigDecimal java.util.HashMap.computeIfAbsent(java.lang.String,java.util.function.Function<? super java.lang.String, ? extends java.math.BigDecimal>)') == 'public BigDecimal computeIfAbsent(String,Function<? super String, ? extends BigDecimal>)' |
223 |
| - end |
224 |
| - |
225 |
| -end |
0 commit comments