summaryrefslogtreecommitdiff
path: root/test/test_completion.vader
blob: 65cef4651d89e425e9a890688ef2e95464a5b6c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
Before:
  Save g:ale_completion_enabled

After:
  Restore

  if !g:ale_completion_enabled
    call ale#completion#Disable()
  endif

Execute(TypeScript completions responses should be parsed correctly):
  AssertEqual [],
  \ ale#completion#ParseTSServerCompletions({
  \ 'body': [],
  \})
  AssertEqual ['foo', 'bar', 'baz'],
  \ ale#completion#ParseTSServerCompletions({
  \ 'body': [
  \   {'name': 'foo'},
  \   {'name': 'bar'},
  \   {'name': 'baz'},
  \ ],
  \})

Execute(TypeScript completion details responses should be parsed correctly):
  AssertEqual
  \ [
  \   {
  \     'word': 'abc',
  \     'menu': '(property) Foo.abc: number',
  \     'info': '',
  \     'kind': 'f',
  \     'icase': 1,
  \   },
  \   {
  \     'word': 'def',
  \     'menu': '(property) Foo.def: number',
  \     'info': 'foo bar baz',
  \     'kind': 'f',
  \     'icase': 1,
  \   },
  \ ],
  \ ale#completion#ParseTSServerCompletionEntryDetails({
  \ 'body': [
  \   {
  \     'name': 'abc',
  \     'kind': 'parameterName',
  \     'displayParts': [
  \       {'text': '('},
  \       {'text': 'property'},
  \       {'text': ')'},
  \       {'text': ' '},
  \       {'text': 'Foo'},
  \       {'text': '.'},
  \       {'text': 'abc'},
  \       {'text': ':'},
  \       {'text': ' '},
  \       {'text': 'number'},
  \     ],
  \   },
  \   {
  \     'name': 'def',
  \     'kind': 'parameterName',
  \     'displayParts': [
  \       {'text': '('},
  \       {'text': 'property'},
  \       {'text': ')'},
  \       {'text': ' '},
  \       {'text': 'Foo'},
  \       {'text': '.'},
  \       {'text': 'def'},
  \       {'text': ':'},
  \       {'text': ' '},
  \       {'text': 'number'},
  \     ],
  \     'documentation': [
  \       {'text': 'foo'},
  \       {'text': ' '},
  \       {'text': 'bar'},
  \       {'text': ' '},
  \       {'text': 'baz'},
  \     ],
  \   },
  \ ],
  \})

Given typescript():
  let abc = y.
  let foo = ab
  let foo = (ab)

Execute(Completion should be done after dots in TypeScript):
  AssertEqual '.', ale#completion#GetPrefix(&filetype, 1, 13)

Execute(Completion should be done after words in TypeScript):
  AssertEqual 'ab', ale#completion#GetPrefix(&filetype, 2, 13)

Execute(Completion should be done after words in parens in TypeScript):
  AssertEqual 'ab', ale#completion#GetPrefix(&filetype, 3, 14)

Execute(Completion should not be done after parens in TypeScript):
  AssertEqual '', ale#completion#GetPrefix(&filetype, 3, 15)