tests for history searching

This commit is contained in:
Kovid Goyal 2022-11-08 16:27:00 +05:30
parent 31dcb13836
commit 1523fef000
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 44 additions and 3 deletions

View File

@ -474,4 +474,41 @@ func TestHistory(t *testing.T) {
test(ActionHistoryNext, "a", "")
test(ActionHistoryNext, "a", "")
ah := func(before_cursor, after_cursor string) {
ab := rl.text_upto_cursor_pos()
aa := rl.text_after_cursor_pos()
if diff := cmp.Diff(before_cursor, ab); diff != "" {
t.Fatalf("Text before cursor not as expected:\n%s", diff)
}
if diff := cmp.Diff(after_cursor, aa); diff != "" {
t.Fatalf("Text before cursor not as expected:\n%s", diff)
}
}
add_item("xyz1")
add_item("xyz2")
add_item("xyz11")
rl.perform_action(ActionHistoryIncrementalSearchBackwards, 1)
ah("", "")
rl.text_to_be_added = "z"
rl.perform_action(ActionAddText, 1)
ah("xy", "z11")
rl.text_to_be_added = "2"
rl.perform_action(ActionAddText, 1)
ah("xy", "z2")
rl.text_to_be_added = "m"
rl.perform_action(ActionAddText, 1)
ah("No matches for: z2m", "")
rl.perform_action(ActionBackspace, 1)
ah("xy", "z2")
rl.perform_action(ActionBackspace, 1)
ah("xy", "z2")
rl.perform_action(ActionHistoryIncrementalSearchBackwards, 1)
ah("xy", "z1")
rl.perform_action(ActionHistoryIncrementalSearchBackwards, 1)
ah("xy", "z1")
rl.perform_action(ActionHistoryIncrementalSearchForwards, 1)
ah("xy", "z2")
rl.perform_action(ActionTerminateHistorySearchAndRestore, 1)
ah("a", "")
}

View File

@ -297,8 +297,8 @@ func (self *Readline) add_text_to_history_search(text string) {
self.history_search.items = []*HistoryItem{}
} else {
items := make([]*HistoryItem, len(self.history.items))
for i, x := range self.history.items {
items[i] = &x
for i := range self.history.items {
items[i] = &self.history.items[i]
}
for _, token := range self.history_search.tokens {
matches := make([]*HistoryItem, 0, len(items))
@ -319,7 +319,11 @@ func (self *Readline) add_text_to_history_search(text string) {
}
}
if idx == -1 {
idx = len(self.history_search.items) - 1
if self.history_search.backwards {
idx = len(self.history_search.items) - 1
} else {
idx = 0
}
}
self.history_search.current_idx = utils.Max(0, idx)
self.markup_history_search()