mirror of
https://github.com/Llewellynvdm/fzf.git
synced 2024-11-29 08:13:54 +00:00
Refactoring for test
This commit is contained in:
parent
67bdc3a0ad
commit
90ad6d50b8
@ -1,7 +1,7 @@
|
|||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
Gem::Specification.new do |spec|
|
Gem::Specification.new do |spec|
|
||||||
spec.name = 'fzf'
|
spec.name = 'fzf'
|
||||||
spec.version = '0.3.1'
|
spec.version = '0.4.0'
|
||||||
spec.authors = ['Junegunn Choi']
|
spec.authors = ['Junegunn Choi']
|
||||||
spec.email = ['junegunn.c@gmail.com']
|
spec.email = ['junegunn.c@gmail.com']
|
||||||
spec.description = %q{Fuzzy finder for your shell}
|
spec.description = %q{Fuzzy finder for your shell}
|
||||||
|
152
test/test_fzf.rb
Normal file
152
test/test_fzf.rb
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
|
require 'minitest/autorun'
|
||||||
|
$LOAD_PATH.unshift File.expand_path('../..', __FILE__)
|
||||||
|
load 'fzf'
|
||||||
|
|
||||||
|
class TestFZF < MiniTest::Unit::TestCase
|
||||||
|
def test_default_options
|
||||||
|
fzf = FZF.new []
|
||||||
|
assert_equal 500, fzf.sort
|
||||||
|
assert_equal false, fzf.multi
|
||||||
|
assert_equal true, fzf.color
|
||||||
|
assert_equal Regexp::IGNORECASE, fzf.rxflag
|
||||||
|
|
||||||
|
begin
|
||||||
|
ENV['FZF_DEFAULT_SORT'] = '1000'
|
||||||
|
fzf = FZF.new []
|
||||||
|
assert_equal 1000, fzf.sort
|
||||||
|
ensure
|
||||||
|
ENV.delete 'FZF_DEFAULT_SORT'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_option_parser
|
||||||
|
# Long opts
|
||||||
|
fzf = FZF.new %w[--sort=2000 --no-color --multi +i]
|
||||||
|
assert_equal 2000, fzf.sort
|
||||||
|
assert_equal true, fzf.multi
|
||||||
|
assert_equal false, fzf.color
|
||||||
|
assert_equal 0, fzf.rxflag
|
||||||
|
|
||||||
|
# Short opts
|
||||||
|
fzf = FZF.new %w[-s 2000 +c -m +i]
|
||||||
|
assert_equal 2000, fzf.sort
|
||||||
|
assert_equal true, fzf.multi
|
||||||
|
assert_equal false, fzf.color
|
||||||
|
assert_equal 0, fzf.rxflag
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_invalid_option
|
||||||
|
[%w[-s 2000 +s], %w[yo dawg]].each do |argv|
|
||||||
|
assert_raises(SystemExit) do
|
||||||
|
fzf = FZF.new argv
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# FIXME Only on 1.9 or above
|
||||||
|
def test_width
|
||||||
|
fzf = FZF.new []
|
||||||
|
assert_equal 5, fzf.width('abcde')
|
||||||
|
assert_equal 4, fzf.width('한글')
|
||||||
|
assert_equal 5, fzf.width('한글.')
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_trim
|
||||||
|
fzf = FZF.new []
|
||||||
|
assert_equal ['사.', 6], fzf.trim('가나다라마바사.', 4, true)
|
||||||
|
assert_equal ['바사.', 5], fzf.trim('가나다라마바사.', 5, true)
|
||||||
|
assert_equal ['가나', 6], fzf.trim('가나다라마바사.', 4, false)
|
||||||
|
assert_equal ['가나', 6], fzf.trim('가나다라마바사.', 5, false)
|
||||||
|
assert_equal ['가나a', 6], fzf.trim('가나ab라마바사.', 5, false)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_format
|
||||||
|
fzf = FZF.new []
|
||||||
|
assert_equal [['01234..', false]], fzf.format('0123456789', 7, [])
|
||||||
|
assert_equal [['012', false], ['34', true], ['..', false]],
|
||||||
|
fzf.format('0123456789', 7, [[3, 5]])
|
||||||
|
assert_equal [['..56', false], ['789', true]],
|
||||||
|
fzf.format('0123456789', 7, [[7, 10]])
|
||||||
|
assert_equal [['..56', false], ['78', true], ['9', false]],
|
||||||
|
fzf.format('0123456789', 7, [[7, 9]])
|
||||||
|
|
||||||
|
(3..5).each do |i|
|
||||||
|
assert_equal [['..', false], ['567', true], ['89', false]],
|
||||||
|
fzf.format('0123456789', 7, [[i, 8]])
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_equal [['..', false], ['345', true], ['..', false]],
|
||||||
|
fzf.format('0123456789', 7, [[3, 6]])
|
||||||
|
assert_equal [['012', false], ['34', true], ['..', false]],
|
||||||
|
fzf.format('0123456789', 7, [[3, 5]])
|
||||||
|
|
||||||
|
# Multi-region
|
||||||
|
assert_equal [["0", true], ["1", false], ["2", true], ["34..", false]],
|
||||||
|
fzf.format('0123456789', 7, [[0, 1], [2, 3]])
|
||||||
|
|
||||||
|
assert_equal [["..", false], ["5", true], ["6", false], ["78", true], ["9", false]],
|
||||||
|
fzf.format('0123456789', 7, [[3, 6], [7, 9]])
|
||||||
|
|
||||||
|
assert_equal [["..", false], ["3", true], ["4", false], ["5", true], ["..", false]],
|
||||||
|
fzf.format('0123456789', 7, [[3, 4], [5, 6]])
|
||||||
|
|
||||||
|
# Multi-region Overlap
|
||||||
|
assert_equal [["..", false], ["345", true], ["..", false]],
|
||||||
|
fzf.format('0123456789', 7, [[4, 5], [3, 6]])
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_fuzzy_matcher
|
||||||
|
matcher = FZF::FuzzyMatcher.new Regexp::IGNORECASE
|
||||||
|
list = %w[
|
||||||
|
juice
|
||||||
|
juiceful
|
||||||
|
juiceless
|
||||||
|
juicily
|
||||||
|
juiciness
|
||||||
|
juicy]
|
||||||
|
assert matcher.cache.empty?
|
||||||
|
assert_equal(
|
||||||
|
[["juice", [[0, 1]]],
|
||||||
|
["juiceful", [[0, 1]]],
|
||||||
|
["juiceless", [[0, 1]]],
|
||||||
|
["juicily", [[0, 1]]],
|
||||||
|
["juiciness", [[0, 1]]],
|
||||||
|
["juicy", [[0, 1]]]], matcher.match(list, 'j', '', '').sort)
|
||||||
|
assert !matcher.cache.empty?
|
||||||
|
assert_equal [list.object_id], matcher.cache.keys
|
||||||
|
assert_equal 1, matcher.cache[list.object_id].length
|
||||||
|
assert_equal 6, matcher.cache[list.object_id]['j'].length
|
||||||
|
|
||||||
|
assert_equal(
|
||||||
|
[["juicily", [[0, 5]]],
|
||||||
|
["juiciness", [[0, 5]]]], matcher.match(list, 'jii', '', '').sort)
|
||||||
|
|
||||||
|
assert_equal(
|
||||||
|
[["juicily", [[2, 5]]],
|
||||||
|
["juiciness", [[2, 5]]]], matcher.match(list, 'ii', '', '').sort)
|
||||||
|
|
||||||
|
assert_equal 3, matcher.cache[list.object_id].length
|
||||||
|
assert_equal 2, matcher.cache[list.object_id]['ii'].length
|
||||||
|
|
||||||
|
# TODO : partial_cache
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_sort_by_rank
|
||||||
|
matcher = FZF::FuzzyMatcher.new Regexp::IGNORECASE
|
||||||
|
list = %w[
|
||||||
|
0____1
|
||||||
|
0_____1
|
||||||
|
01
|
||||||
|
____0_1
|
||||||
|
01_
|
||||||
|
_01_
|
||||||
|
0______1
|
||||||
|
___01___
|
||||||
|
]
|
||||||
|
assert_equal %w[01 01_ _01_ ___01___ ____0_1 0____1 0_____1 0______1],
|
||||||
|
FZF.new([]).sort_by_rank(matcher.match(list, '01', '', '')).map(&:first)
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user