Fixed vim and zsh
This commit is contained in:
@ -0,0 +1,35 @@
|
||||
import deoplete.util as util
|
||||
from deoplete.filter.converter_remove_overlap import overlap_length
|
||||
|
||||
def test_fuzzy_escapse():
|
||||
assert util.fuzzy_escape('foo', 0) == 'f[^f]*o[^o]*o[^o]*'
|
||||
assert util.fuzzy_escape('foo', 1) == 'f[^f]*o[^o]*o[^o]*'
|
||||
assert util.fuzzy_escape('Foo', 1) == 'F[^F]*[oO].*[oO].*'
|
||||
|
||||
def test_overlap_length():
|
||||
assert overlap_length('foo bar', 'bar baz') == 3
|
||||
assert overlap_length('foobar', 'barbaz') == 3
|
||||
assert overlap_length('foob', 'baz') == 1
|
||||
assert overlap_length('foobar', 'foobar') == 6
|
||||
assert overlap_length('тест', 'ст') == len('ст')
|
||||
|
||||
def test_charwidth():
|
||||
assert util.charwidth('f') == 1
|
||||
assert util.charwidth('あ') == 2
|
||||
|
||||
def test_strwidth():
|
||||
assert util.strwidth('foo bar') == 7
|
||||
assert util.strwidth('あいうえ') == 8
|
||||
assert util.strwidth('fooあい') == 7
|
||||
|
||||
def test_truncate():
|
||||
assert util.truncate('foo bar', 3) == 'foo'
|
||||
assert util.truncate('fooあい', 5) == 'fooあ'
|
||||
assert util.truncate('あいうえ', 4) == 'あい'
|
||||
assert util.truncate('fooあい', 4) == 'foo'
|
||||
|
||||
def test_skipping():
|
||||
assert util.truncate_skipping('foo bar', 3, '..', 3) == '..bar'
|
||||
assert util.truncate_skipping('foo bar', 6, '..', 3) == 'f..bar'
|
||||
assert util.truncate_skipping('fooあい', 5, '..', 3) == 'f..い'
|
||||
assert util.truncate_skipping('あいうえ', 6, '..', 2) == 'あ..え'
|
@ -0,0 +1,59 @@
|
||||
from deoplete.filter.matcher_full_fuzzy import Filter
|
||||
from test_matcher_fuzzy import _ctx
|
||||
|
||||
|
||||
def test_matcher_full_fuzzy():
|
||||
f = Filter(None)
|
||||
|
||||
assert f.name == 'matcher_full_fuzzy'
|
||||
assert f.description == 'full fuzzy matcher'
|
||||
|
||||
ctx = _ctx('')
|
||||
assert f.filter(ctx) == [
|
||||
{ 'word': 'foobar' },
|
||||
{ 'word': 'afoobar' },
|
||||
{ 'word': 'fooBar' },
|
||||
{ 'word': 'afooBar' },
|
||||
{ 'word': 'Foobar' },
|
||||
{ 'word': 'aFoobar' },
|
||||
{ 'word': 'FooBar' },
|
||||
{ 'word': 'aFooBar' },
|
||||
]
|
||||
|
||||
ctx = _ctx('FOBR')
|
||||
assert f.filter(ctx) == [
|
||||
{ 'word': 'foobar' },
|
||||
{ 'word': 'afoobar' },
|
||||
{ 'word': 'fooBar' },
|
||||
{ 'word': 'afooBar' },
|
||||
{ 'word': 'Foobar' },
|
||||
{ 'word': 'aFoobar' },
|
||||
{ 'word': 'FooBar' },
|
||||
{ 'word': 'aFooBar' },
|
||||
]
|
||||
|
||||
ctx = _ctx('foBr', ignorecase=False)
|
||||
assert f.filter(ctx) == [
|
||||
{ 'word': 'fooBar' },
|
||||
{ 'word': 'afooBar' },
|
||||
{ 'word': 'FooBar' },
|
||||
{ 'word': 'aFooBar' },
|
||||
]
|
||||
|
||||
ctx = _ctx('fobr', camelcase=False)
|
||||
assert f.filter(ctx) == [
|
||||
{ 'word': 'foobar' },
|
||||
{ 'word': 'afoobar' },
|
||||
{ 'word': 'fooBar' },
|
||||
{ 'word': 'afooBar' },
|
||||
{ 'word': 'Foobar' },
|
||||
{ 'word': 'aFoobar' },
|
||||
{ 'word': 'FooBar' },
|
||||
{ 'word': 'aFooBar' },
|
||||
]
|
||||
|
||||
ctx = _ctx('fobr', ignorecase=False, camelcase=False)
|
||||
assert f.filter(ctx) == [
|
||||
{ 'word': 'foobar' },
|
||||
{ 'word': 'afoobar' },
|
||||
]
|
@ -0,0 +1,67 @@
|
||||
from deoplete.filter.matcher_fuzzy import Filter
|
||||
|
||||
|
||||
def _ctx(complete_str, ignorecase=True, camelcase=True):
|
||||
_candidates = [
|
||||
{ 'word': 'foobar' },
|
||||
{ 'word': 'afoobar' },
|
||||
{ 'word': 'fooBar' },
|
||||
{ 'word': 'afooBar' },
|
||||
{ 'word': 'Foobar' },
|
||||
{ 'word': 'aFoobar' },
|
||||
{ 'word': 'FooBar' },
|
||||
{ 'word': 'aFooBar' },
|
||||
]
|
||||
|
||||
return {
|
||||
'complete_str' : complete_str,
|
||||
'ignorecase' : ignorecase,
|
||||
'camelcase' : camelcase,
|
||||
'is_sorted' : False,
|
||||
'candidates' : _candidates
|
||||
}
|
||||
|
||||
def test_matcher_fuzzy():
|
||||
f = Filter(None)
|
||||
|
||||
assert f.name == 'matcher_fuzzy'
|
||||
assert f.description == 'fuzzy matcher'
|
||||
|
||||
ctx = _ctx('')
|
||||
assert f.filter(ctx) == [
|
||||
{ 'word': 'foobar' },
|
||||
{ 'word': 'afoobar' },
|
||||
{ 'word': 'fooBar' },
|
||||
{ 'word': 'afooBar' },
|
||||
{ 'word': 'Foobar' },
|
||||
{ 'word': 'aFoobar' },
|
||||
{ 'word': 'FooBar' },
|
||||
{ 'word': 'aFooBar' },
|
||||
]
|
||||
|
||||
ctx = _ctx('FOBR')
|
||||
assert f.filter(ctx) == [
|
||||
{ 'word': 'foobar' },
|
||||
{ 'word': 'fooBar' },
|
||||
{ 'word': 'Foobar' },
|
||||
{ 'word': 'FooBar' },
|
||||
]
|
||||
|
||||
ctx = _ctx('foBr', ignorecase=False)
|
||||
assert f.filter(ctx) == [
|
||||
{ 'word': 'fooBar' },
|
||||
{ 'word': 'FooBar' },
|
||||
]
|
||||
|
||||
ctx = _ctx('fobr', camelcase=False)
|
||||
assert f.filter(ctx) == [
|
||||
{ 'word': 'foobar' },
|
||||
{ 'word': 'fooBar' },
|
||||
{ 'word': 'Foobar' },
|
||||
{ 'word': 'FooBar' },
|
||||
]
|
||||
|
||||
ctx = _ctx('fobr', ignorecase=False, camelcase=False)
|
||||
assert f.filter(ctx) == [
|
||||
{ 'word': 'foobar' },
|
||||
]
|
@ -0,0 +1,69 @@
|
||||
import deoplete.util as util
|
||||
|
||||
|
||||
def test_pos():
|
||||
assert util.bytepos2charpos('utf-8', 'foo bar', 3) == 3
|
||||
assert util.bytepos2charpos('utf-8', 'あああ', 3) == 1
|
||||
assert util.charpos2bytepos('utf-8', 'foo bar', 3) == 3
|
||||
assert util.charpos2bytepos('utf-8', 'あああ', 3) == 9
|
||||
|
||||
|
||||
def test_custom():
|
||||
custom = {'source':{}}
|
||||
custom['source'] = {'_': {'mark': ''}, 'java': {'converters': []}}
|
||||
assert util.get_custom(custom, 'java', 'mark', 'foobar') == ''
|
||||
assert util.get_custom(custom, 'java', 'converters', 'foobar') == []
|
||||
assert util.get_custom(custom, 'foo', 'mark', 'foobar') == ''
|
||||
assert util.get_custom(custom, 'foo', 'converters', 'foobar') == 'foobar'
|
||||
|
||||
|
||||
def test_globruntime():
|
||||
assert util.globruntime('/usr', 'bin') == ['/usr/bin']
|
||||
|
||||
|
||||
def test_binary_search():
|
||||
assert util.binary_search_begin([], '') == -1
|
||||
assert util.binary_search_begin([{'word': 'abc'}], 'abc') == 0
|
||||
assert util.binary_search_begin([
|
||||
{'word': 'aaa'}, {'word': 'abc'},
|
||||
], 'abc') == 1
|
||||
assert util.binary_search_begin([
|
||||
{'word': 'a'}, {'word': 'aaa'}, {'word': 'abc'},
|
||||
], 'abc') == 2
|
||||
assert util.binary_search_begin([
|
||||
{'word': 'a'}, {'word': 'aaa'}, {'word': 'AbC'},
|
||||
], 'abc') == 2
|
||||
assert util.binary_search_begin([
|
||||
{'word': 'a'}, {'word': 'aaa'}, {'word': 'abc'},
|
||||
], 'b') == -1
|
||||
assert util.binary_search_begin([
|
||||
{'word': 'a'}, {'word': 'aaa'}, {'word': 'aac'}, {'word': 'abc'},
|
||||
], 'aa') == 1
|
||||
|
||||
assert util.binary_search_end([], '') == -1
|
||||
assert util.binary_search_end([{'word': 'abc'}], 'abc') == 0
|
||||
assert util.binary_search_end([
|
||||
{'word': 'aaa'}, {'word': 'abc'},
|
||||
], 'abc') == 1
|
||||
assert util.binary_search_end([
|
||||
{'word': 'a'}, {'word': 'aaa'}, {'word': 'abc'},
|
||||
], 'abc') == 2
|
||||
assert util.binary_search_end([
|
||||
{'word': 'a'}, {'word': 'aaa'}, {'word': 'abc'},
|
||||
], 'b') == -1
|
||||
assert util.binary_search_end([
|
||||
{'word': 'a'}, {'word': 'aaa'}, {'word': 'aac'}, {'word': 'abc'},
|
||||
], 'aa') == 2
|
||||
|
||||
|
||||
def test_uniq_list_dict():
|
||||
assert util.uniq_list_dict([
|
||||
{'abbr': 'word', 'word': 'foobar'},
|
||||
{'word': 'bar'},
|
||||
{'word': 'foobar', 'abbr': 'word'},
|
||||
{'word': 'baz'},
|
||||
]) == [
|
||||
{'word': 'foobar', 'abbr': 'word'},
|
||||
{'word': 'bar'},
|
||||
{'word': 'baz'}
|
||||
]
|
Reference in New Issue
Block a user