summaryrefslogtreecommitdiff
path: root/test/completion/test_completion_filtering.vader
blob: ffb313efd1aa5d218387b9d8492e1e9e90e6fcf1 (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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
Before:
  Save g:ale_completion_excluded_words

  let g:ale_completion_excluded_words = []

After:
  Restore

  unlet! b:ale_completion_excluded_words
  unlet! b:suggestions

Execute(Prefix filtering should work for Lists of strings):
  AssertEqual
  \ ['FooBar', 'foo'],
  \ ale#completion#Filter(bufnr(''), '', ['FooBar', 'FongBar', 'baz', 'foo'], 'foo')
  AssertEqual
  \ ['FooBar', 'FongBar', 'baz', 'foo'],
  \ ale#completion#Filter(bufnr(''), '', ['FooBar', 'FongBar', 'baz', 'foo'], '.')

Execute(Prefix filtering should work for completion items):
  AssertEqual
  \ [{'word': 'FooBar'}, {'word': 'foo'}],
  \ ale#completion#Filter(
  \   bufnr(''),
  \   '',
  \   [
  \     {'word': 'FooBar'},
  \     {'word': 'FongBar'},
  \     {'word': 'baz'},
  \     {'word': 'foo'},
  \   ],
  \   'foo'
  \ )

  AssertEqual
  \ [
  \   {'word': 'FooBar'},
  \   {'word': 'FongBar'},
  \   {'word': 'baz'},
  \   {'word': 'foo'},
  \ ],
  \ ale#completion#Filter(
  \   bufnr(''),
  \   '',
  \   [
  \     {'word': 'FooBar'},
  \     {'word': 'FongBar'},
  \     {'word': 'baz'},
  \     {'word': 'foo'},
  \   ],
  \   '.'
  \ )

Execute(Excluding words from completion results should work):
  let b:ale_completion_excluded_words = ['it', 'describe']

  AssertEqual
  \ [{'word': 'Italian'}],
  \ ale#completion#Filter(
  \   bufnr(''),
  \   '',
  \   [
  \     {'word': 'Italian'},
  \     {'word': 'it'},
  \   ],
  \   'it'
  \ )

  AssertEqual
  \ [{'word': 'Deutsch'}],
  \ ale#completion#Filter(
  \   bufnr(''),
  \   '',
  \   [
  \     {'word': 'describe'},
  \     {'word': 'Deutsch'},
  \   ],
  \   'de'
  \ )

  AssertEqual
  \ [{'word': 'Deutsch'}],
  \ ale#completion#Filter(
  \   bufnr(''),
  \   '',
  \   [
  \     {'word': 'describe'},
  \     {'word': 'Deutsch'},
  \   ],
  \   '.'
  \ )

Execute(Excluding words from completion results should work with lists of Strings):
  let b:ale_completion_excluded_words = ['it', 'describe']

  AssertEqual
  \ ['Italian'],
  \ ale#completion#Filter(bufnr(''), '', ['Italian', 'it'], 'it')
  AssertEqual
  \ ['Deutsch'],
  \ ale#completion#Filter(bufnr(''), '', ['describe', 'Deutsch'], 'de')
  AssertEqual
  \ ['Deutsch'],
  \ ale#completion#Filter(bufnr(''), '', ['describe', 'Deutsch'], '.')

Execute(Filtering shouldn't modify the original list):
  let b:ale_completion_excluded_words = ['it', 'describe']
  let b:suggestions = [{'word': 'describe'}]

  AssertEqual [], ale#completion#Filter(bufnr(''), '', b:suggestions, '.')
  AssertEqual b:suggestions, [{'word': 'describe'}]
  AssertEqual [], ale#completion#Filter(bufnr(''), '', b:suggestions, 'de')
  AssertEqual b:suggestions, [{'word': 'describe'}]

Execute(Filtering should respect filetype triggers):
  let b:suggestions = [{'word': 'describe'}]

  AssertEqual b:suggestions, ale#completion#Filter(bufnr(''), '', b:suggestions, '.')
  AssertEqual b:suggestions, ale#completion#Filter(bufnr(''), 'rust', b:suggestions, '.')
  AssertEqual b:suggestions, ale#completion#Filter(bufnr(''), 'rust', b:suggestions, '::')