Skip to content

Commit 7ca1e14

Browse files
committed
Vimscript tests refactor.
1 parent ba014d6 commit 7ca1e14

7 files changed

+243
-214
lines changed

t/complete.vim

+85
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
source autoload/javacomplete.vim
2+
source autoload/javacomplete/complete.vim
3+
source t/javacomplete.vim
4+
5+
call vspec#hint({'sid': 'g:SID("complete")', 'scope': 'SScope()'})
6+
7+
describe 'javacomplete-test'
8+
it 'CollectFQNs test'
9+
Expect Call('s:CollectFQNs', 'List', 'kg.ash.foo', '') == ['kg.ash.foo.List','java.lang.List', 'java.lang.Object']
10+
Expect Call('s:CollectFQNs', 'java.util.List', 'kg.ash.foo', '') == ['java.util.List']
11+
12+
new
13+
source autoload/javacomplete.vim
14+
put ='import java.util.List;'
15+
Expect Call('s:CollectFQNs', 'List', '', '') == ['java.util.List']
16+
17+
new
18+
source autoload/javacomplete.vim
19+
put ='import java.util.*;'
20+
put ='import java.foo.*;'
21+
Expect Call('s:CollectFQNs', 'List', '', '') == ['List', 'java.lang.List', 'java.util.List', 'java.foo.List', 'java.lang.Object']
22+
Expect Call('s:CollectFQNs', 'List', 'kg.ash.foo', '') == ['kg.ash.foo.List', 'java.lang.List', 'java.util.List', 'java.foo.List', 'java.lang.Object']
23+
end
24+
25+
26+
it 'GetPackageName test'
27+
28+
Expect Call('s:GetPackageName') == ''
29+
30+
new
31+
put ='package foo.bar.baz'
32+
Expect Call('s:GetPackageName') == ''
33+
34+
new
35+
put ='package foo.bar.baz;'
36+
Expect Call('s:GetPackageName') == 'foo.bar.baz'
37+
end
38+
39+
it 'Regexps test'
40+
let reTypeArgument = g:RE_TYPE_ARGUMENT
41+
let reTypeArgumentExtends = g:RE_TYPE_ARGUMENT_EXTENDS
42+
Expect 'Integer[]' =~ reTypeArgument
43+
Expect 'Integer[]' !~ reTypeArgumentExtends
44+
Expect '? super Integer[]' =~ reTypeArgument
45+
Expect '? super Integer[]' =~ reTypeArgumentExtends
46+
47+
let qualid = g:RE_QUALID
48+
Expect 'java.util.function.ToIntFunction' =~ '^\s*' . qualid . '\s*$'
49+
Expect Call('s:HasKeyword', 'java.util.function.ToIntFunction') == 0
50+
end
51+
52+
it 'CollectTypeArguments test'
53+
source autoload/javacomplete.vim
54+
Expect Call('s:CollectTypeArguments', '', '', '') == ''
55+
56+
Expect Call('s:CollectTypeArguments', 'Integer', '', '') == '<(Integer|java.lang.Integer|java.lang.Object)>'
57+
Expect Call('s:CollectTypeArguments', 'Integer[]', '', '') == '<(Integer[]|java.lang.Integer[]|java.lang.Object)>'
58+
Expect Call('s:CollectTypeArguments', '? super Integer[]', '', '') == '<(Integer[]|java.lang.Integer[]|java.lang.Object)>'
59+
60+
new
61+
source autoload/javacomplete.vim
62+
put ='import java.util.List;'
63+
put ='import java.util.HashMap;'
64+
Expect Call('s:CollectTypeArguments', 'List<HashMap<String,BigDecimal>>', '', '') == '<java.util.List<HashMap<String,BigDecimal>>>'
65+
Expect Call('s:CollectTypeArguments', 'HashMap<String,BigDecimal>', '', '') == '<java.util.HashMap<String,BigDecimal>>'
66+
Expect Call('s:CollectTypeArguments', 'String,BigDecimal', '', '') == '<(String|java.lang.String|java.lang.Object),(BigDecimal|java.lang.BigDecimal|java.lang.Object)>'
67+
put ='import java.math.BigDecimal;'
68+
Expect Call('s:CollectTypeArguments', 'String,BigDecimal', '', '') == '<(String|java.lang.String|java.lang.Object),java.math.BigDecimal>'
69+
70+
Expect Call('s:CollectTypeArguments', 'MyClass', '', '') == '<(MyClass|java.lang.MyClass|java.lang.Object)>'
71+
Expect Call('s:CollectTypeArguments', 'MyClass', 'foo.bar.baz', '') == '<(foo.bar.baz.MyClass|java.lang.MyClass|java.lang.Object)>'
72+
end
73+
74+
it 'SplitTypeArguments test'
75+
Expect Call('s:SplitTypeArguments', 'java.util.List<Integer>') == ['java.util.List', 'Integer']
76+
Expect Call('s:SplitTypeArguments', 'java.util.List<java.lang.Integer>') == ['java.util.List', 'java.lang.Integer']
77+
Expect Call('s:SplitTypeArguments', 'java.util.HashMap<Integer,String>') == ['java.util.HashMap', 'Integer,String']
78+
Expect Call('s:SplitTypeArguments', 'java.util.List<? extends java.lang.Integer[]>') == ['java.util.List', '? extends java.lang.Integer[]']
79+
Expect Call('s:SplitTypeArguments', 'List<? extends java.lang.Integer[]>') == ['List', '? extends java.lang.Integer[]']
80+
Expect Call('s:SplitTypeArguments', 'java.util.HashMap<? super Integer,? extends String>') == ['java.util.HashMap', '? super Integer,? extends String']
81+
Expect Call('s:SplitTypeArguments', 'java.util.function.ToIntFunction<? super java.lang.Integer[]>') == ['java.util.function.ToIntFunction', '? super java.lang.Integer[]']
82+
Expect Call('s:SplitTypeArguments', 'java.lang.Class<?>') == ['java.lang.Class', 0]
83+
end
84+
85+
end

t/imports.vim

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
source autoload/javacomplete/imports.vim
2+
source t/javacomplete.vim
3+
4+
call vspec#hint({'sid': 'g:SID("imports")', 'scope': 'SScope()'})
5+
6+
describe 'javacomplete imports test'
7+
it 'AddImport test'
8+
new
9+
source autoload/javacomplete.vim
10+
put! ='package kg.ash.foo;'
11+
12+
call Call('s:AddImport', 'java.util.List')
13+
Expect getline(3) == 'import java.util.List;'
14+
15+
call Call('s:AddImport', 'java.util.ArrayList')
16+
Expect getline(3) == 'import java.util.List;'
17+
18+
call Call('s:AddImport', 'foo.bar.Baz')
19+
Expect getline(5) == 'import foo.bar.Baz;'
20+
21+
call Call('s:AddImport', 'zoo.bar.Baz')
22+
Expect getline(5) == 'import foo.bar.Baz;'
23+
24+
new
25+
26+
source autoload/javacomplete.vim
27+
call Call('s:AddImport', 'java.util.List')
28+
Expect getline(2) == 'import java.util.List;'
29+
30+
call Call('s:AddImport', 'java.util.ArrayList')
31+
Expect getline(3) == 'import java.util.ArrayList;'
32+
33+
call Call('s:AddImport', 'foo.bar.Baz')
34+
Expect getline(4) == 'import foo.bar.Baz;'
35+
36+
call Call('s:AddImport', 'zoo.bar.Baz')
37+
Expect getline(4) == 'import foo.bar.Baz;'
38+
39+
end
40+
end

t/java_parser.vim

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
source autoload/java_parser.vim
2+
source t/javacomplete.vim
23

34
function! SID() abort
45
redir => l:scriptnames
@@ -36,7 +37,7 @@ describe 'javaparser test'
3637
end
3738

3839
it 'GetInnerText test'
39-
let tree = Call('javacomplete#parse', 't/data/LambdaNamedClass.java')
40+
let tree = Call('javacomplete#parseradapter#Parse', 't/data/LambdaNamedClass.java')
4041

4142
call Call('java_parser#GotoPosition', 380)
4243
Expect Call('s:GetInnerText', '(') == '(String t, BigDecimal d)'

t/javacomplete.vim

+2-213
Original file line numberDiff line numberDiff line change
@@ -1,225 +1,14 @@
11
source autoload/javacomplete.vim
22
source autoload/java_parser.vim
33

4-
function! SID() abort
4+
function! g:SID(file) abort
55
redir => l:scriptnames
66
silent scriptnames
77
redir END
88
for line in split(l:scriptnames, '\n')
99
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$'
1111
return '<SNR>' . l:sid . '_'
1212
endif
1313
endfor
1414
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

Comments
 (0)