Start writing tests for readline internal functions
This commit is contained in:
parent
32059dba7e
commit
1792c2268a
@ -11,6 +11,42 @@ import (
|
||||
|
||||
var _ = fmt.Print
|
||||
|
||||
func (self *Readline) text_upto_cursor_pos() string {
|
||||
buf := strings.Builder{}
|
||||
buf.Grow(1024)
|
||||
for i, line := range self.lines {
|
||||
if i == self.cursor_line {
|
||||
buf.WriteString(line[:self.cursor_pos_in_line])
|
||||
break
|
||||
} else {
|
||||
buf.WriteString(line)
|
||||
buf.WriteString("\n")
|
||||
}
|
||||
}
|
||||
return buf.String()
|
||||
}
|
||||
|
||||
func (self *Readline) text_after_cursor_pos() string {
|
||||
buf := strings.Builder{}
|
||||
buf.Grow(1024)
|
||||
for i, line := range self.lines {
|
||||
if i == self.cursor_line {
|
||||
buf.WriteString(line[self.cursor_pos_in_line:])
|
||||
buf.WriteString("\n")
|
||||
} else if i > self.cursor_line {
|
||||
buf.WriteString(line)
|
||||
buf.WriteString("\n")
|
||||
}
|
||||
}
|
||||
ans := buf.String()
|
||||
ans = ans[:len(ans)-1]
|
||||
return ans
|
||||
}
|
||||
|
||||
func (self *Readline) all_text() string {
|
||||
return strings.Join(self.lines, "\n")
|
||||
}
|
||||
|
||||
func (self *Readline) add_text(text string) {
|
||||
new_lines := make([]string, 0, len(self.lines)+4)
|
||||
new_lines = append(new_lines, self.lines[:self.cursor_line]...)
|
||||
|
||||
41
tools/tui/readline/actions_test.go
Normal file
41
tools/tui/readline/actions_test.go
Normal file
@ -0,0 +1,41 @@
|
||||
// License: GPLv3 Copyright: 2022, Kovid Goyal, <kovid at kovidgoyal.net>
|
||||
|
||||
package readline
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"kitty/tools/tui/loop"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var _ = fmt.Print
|
||||
|
||||
func TestAddText(t *testing.T) {
|
||||
lp, _ := loop.New()
|
||||
|
||||
dt := func(initial string, prepare func(rl *Readline), expected ...string) {
|
||||
rl := New(lp, RlInit{})
|
||||
rl.add_text(initial)
|
||||
if prepare != nil {
|
||||
prepare(rl)
|
||||
}
|
||||
if len(expected) > 0 {
|
||||
if expected[0] != rl.text_upto_cursor_pos() {
|
||||
t.Fatalf("Text upto cursor pos not as expected for: %#v\n%#v != %#v", initial, expected[0], rl.text_upto_cursor_pos())
|
||||
}
|
||||
}
|
||||
if len(expected) > 1 {
|
||||
if expected[1] != rl.text_after_cursor_pos() {
|
||||
t.Fatalf("Text after cursor pos not as expected for: %#v\n%#v != %#v", initial, expected[1], rl.text_after_cursor_pos())
|
||||
}
|
||||
}
|
||||
if len(expected) > 2 {
|
||||
if expected[2] != rl.all_text() {
|
||||
t.Fatalf("Text not as expected for: %#v\n%#v != %#v", initial, expected[2], rl.all_text())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dt("test", nil, "test", "", "test")
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user