diff options
Diffstat (limited to 'src/item_test.go')
-rw-r--r-- | src/item_test.go | 108 |
1 files changed, 11 insertions, 97 deletions
diff --git a/src/item_test.go b/src/item_test.go index 36a436d3..1efb5f1d 100644 --- a/src/item_test.go +++ b/src/item_test.go @@ -1,109 +1,23 @@ package fzf import ( - "math" - "sort" "testing" - "github.com/junegunn/fzf/src/curses" "github.com/junegunn/fzf/src/util" ) -func TestOffsetSort(t *testing.T) { - offsets := []Offset{ - Offset{3, 5}, Offset{2, 7}, - Offset{1, 3}, Offset{2, 9}} - sort.Sort(ByOrder(offsets)) - - if offsets[0][0] != 1 || offsets[0][1] != 3 || - offsets[1][0] != 2 || offsets[1][1] != 7 || - offsets[2][0] != 2 || offsets[2][1] != 9 || - offsets[3][0] != 3 || offsets[3][1] != 5 { - t.Error("Invalid order:", offsets) - } -} - -func TestRankComparison(t *testing.T) { - if compareRanks([5]int32{3, 0, 0, 0, 5}, [5]int32{2, 0, 0, 0, 7}, false) || - !compareRanks([5]int32{3, 0, 0, 0, 5}, [5]int32{3, 0, 0, 0, 6}, false) || - !compareRanks([5]int32{1, 2, 0, 0, 3}, [5]int32{1, 3, 0, 0, 2}, false) || - !compareRanks([5]int32{0, 0, 0, 0, 0}, [5]int32{0, 0, 0, 0, 0}, false) { - t.Error("Invalid order") - } - - if compareRanks([5]int32{3, 0, 0, 0, 5}, [5]int32{2, 0, 0, 0, 7}, true) || - !compareRanks([5]int32{3, 0, 0, 0, 5}, [5]int32{3, 0, 0, 0, 6}, false) || - !compareRanks([5]int32{1, 2, 0, 0, 3}, [5]int32{1, 3, 0, 0, 2}, true) || - !compareRanks([5]int32{0, 0, 0, 0, 0}, [5]int32{0, 0, 0, 0, 0}, false) { - t.Error("Invalid order (tac)") - } -} - -// Match length, string length, index -func TestItemRank(t *testing.T) { - // FIXME global - sortCriteria = []criterion{byMatchLen, byLength} - - strs := [][]rune{[]rune("foo"), []rune("foobar"), []rune("bar"), []rune("baz")} - item1 := Item{text: util.RunesToChars(strs[0]), offsets: []Offset{}, rank: [5]int32{0, 0, 0, 0, 1}} - rank1 := item1.Rank(true) - if rank1[0] != math.MaxInt32 || rank1[1] != 3 || rank1[4] != 1 { - t.Error(item1.Rank(true)) +func TestStringPtr(t *testing.T) { + orig := []byte("\x1b[34mfoo") + text := []byte("\x1b[34mbar") + item := Item{origText: &orig, text: util.ToChars(text)} + if item.AsString(true) != "foo" || item.AsString(false) != string(orig) { + t.Fail() } - // Only differ in index - item2 := Item{text: util.RunesToChars(strs[0]), offsets: []Offset{}} - - items := []*Item{&item1, &item2} - sort.Sort(ByRelevance(items)) - if items[0] != &item2 || items[1] != &item1 { - t.Error(items) + if item.AsString(true) != "foo" { + t.Fail() } - - items = []*Item{&item2, &item1, &item1, &item2} - sort.Sort(ByRelevance(items)) - if items[0] != &item2 || items[1] != &item2 || - items[2] != &item1 || items[3] != &item1 { - t.Error(items) - } - - // Sort by relevance - item3 := Item{text: util.RunesToChars(strs[1]), rank: [5]int32{0, 0, 0, 0, 2}, offsets: []Offset{Offset{1, 3}, Offset{5, 7}}} - item4 := Item{text: util.RunesToChars(strs[1]), rank: [5]int32{0, 0, 0, 0, 2}, offsets: []Offset{Offset{1, 2}, Offset{6, 7}}} - item5 := Item{text: util.RunesToChars(strs[2]), rank: [5]int32{0, 0, 0, 0, 2}, offsets: []Offset{Offset{1, 3}, Offset{5, 7}}} - item6 := Item{text: util.RunesToChars(strs[2]), rank: [5]int32{0, 0, 0, 0, 2}, offsets: []Offset{Offset{1, 2}, Offset{6, 7}}} - items = []*Item{&item1, &item2, &item3, &item4, &item5, &item6} - sort.Sort(ByRelevance(items)) - if items[0] != &item6 || items[1] != &item4 || - items[2] != &item5 || items[3] != &item3 || - items[4] != &item2 || items[5] != &item1 { - t.Error(items) - } -} - -func TestColorOffset(t *testing.T) { - // ------------ 20 ---- -- ---- - // ++++++++ ++++++++++ - // --++++++++-- --++++++++++--- - item := Item{ - offsets: []Offset{Offset{5, 15}, Offset{25, 35}}, - colors: []ansiOffset{ - ansiOffset{[2]int32{0, 20}, ansiState{1, 5, false}}, - ansiOffset{[2]int32{22, 27}, ansiState{2, 6, true}}, - ansiOffset{[2]int32{30, 32}, ansiState{3, 7, false}}, - ansiOffset{[2]int32{33, 40}, ansiState{4, 8, true}}}} - // [{[0 5] 9 false} {[5 15] 99 false} {[15 20] 9 false} {[22 25] 10 true} {[25 35] 99 false} {[35 40] 11 true}] - - offsets := item.colorOffsets(99, false, true) - assert := func(idx int, b int32, e int32, c int, bold bool) { - o := offsets[idx] - if o.offset[0] != b || o.offset[1] != e || o.color != c || o.bold != bold { - t.Error(o) - } + item.origText = nil + if item.AsString(true) != string(text) || item.AsString(false) != string(text) { + t.Fail() } - assert(0, 0, 5, curses.ColUser, false) - assert(1, 5, 15, 99, false) - assert(2, 15, 20, curses.ColUser, false) - assert(3, 22, 25, curses.ColUser+1, true) - assert(4, 25, 35, 99, false) - assert(5, 35, 40, curses.ColUser+2, true) } |