-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain_test.go
49 lines (43 loc) · 1.15 KB
/
main_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package multiline
import (
"context"
"io"
"strings"
"testing"
"github.com/nyaosorg/go-readline-ny/auto"
"github.com/nyaosorg/go-readline-ny/keys"
)
func TestEditorRead(t *testing.T) {
// Type `SELECT ALL\n FROM\nDUAL`
keyin := strings.Split("SELECT ALL\r FROM\rDUAL", "")
// Move cursor to the top line
keyin = append(keyin, keys.Up, keys.Up)
// Replace `ALL` to `*`
keyin = append(keyin, keys.CtrlE, keys.CtrlH, keys.CtrlH, keys.CtrlH, "*", keys.CtrlJ)
var ed Editor
ed.LineEditor.Tty = &auto.Pilot{Text: keyin}
ed.SetWriter(io.Discard)
lines, err := ed.Read(context.Background())
if err != nil {
t.Fatal(err.Error())
}
result := strings.Join(lines, "\n")
expect := "SELECT *\n FROM\nDUAL"
if result != expect {
t.Fatalf("expect %#v, but %#v", expect, result)
}
}
func TestPrintLastLine(t *testing.T) {
cases := [][2]string{
[2]string{"test\nprompt", "prompt"},
[2]string{"test\x1B[32m\nprompt\x1B[0m", "\x1B[32mprompt\x1B[0m"},
}
for _, case1 := range cases {
var buffer strings.Builder
printLastLine(case1[0], &buffer)
result := buffer.String()
if case1[1] != result {
t.Fatalf("expect %s, but %s", case1[1], result)
}
}
}