Skip to content

Commit 33158bc

Browse files
committed
nvim: add Mark testcases
Signed-off-by: Koichi Shiraishi <[email protected]>
1 parent 91d90e4 commit 33158bc

File tree

1 file changed

+166
-0
lines changed

1 file changed

+166
-0
lines changed

nvim/api_test.go

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ func TestAPI(t *testing.T) {
133133
t.Run("ChannelClientInfo", testChannelClientInfo(v))
134134
t.Run("UI", testUI(v))
135135
t.Run("Proc", testProc(v))
136+
t.Run("Mark", testMark(v))
136137
}
137138

138139
func testBufAttach(v *Nvim) func(*testing.T) {
@@ -4897,3 +4898,168 @@ func testProc(v *Nvim) func(*testing.T) {
48974898
})
48984899
}
48994900
}
4901+
4902+
func testMark(v *Nvim) func(*testing.T) {
4903+
return func(t *testing.T) {
4904+
t.Run("Nvim", func(t *testing.T) {
4905+
// set dummy lines
4906+
lines := [][]byte{
4907+
[]byte("a"),
4908+
[]byte("bit of"),
4909+
[]byte("text"),
4910+
}
4911+
if err := v.SetBufferLines(Buffer(0), 0, -1, true, lines); err != nil {
4912+
t.Fatal(err)
4913+
}
4914+
t.Cleanup(func() {
4915+
clearBuffer(t, v, Buffer(0))
4916+
})
4917+
4918+
// set cursor position
4919+
if err := v.SetWindowCursor(Window(0), [2]int{3, 0}); err != nil {
4920+
t.Fatal(err)
4921+
}
4922+
4923+
// set buffer name
4924+
cwd, err := os.Getwd() // buffer name is full path
4925+
if err != nil {
4926+
t.Fatal(err)
4927+
}
4928+
// shrink home path
4929+
cwd = strings.ReplaceAll(cwd, os.Getenv("HOME"), "~")
4930+
bufName := filepath.Join(cwd, "test_mark_buffer")
4931+
if err := v.SetBufferName(Buffer(0), bufName); err != nil {
4932+
t.Fatal(err)
4933+
}
4934+
4935+
// set mark
4936+
const mark = "X"
4937+
if err := v.Command(fmt.Sprintf("mark %s", mark)); err != nil {
4938+
t.Fatal(err)
4939+
}
4940+
4941+
gotMark, err := v.Mark(mark, make(map[string]interface{}))
4942+
if err != nil {
4943+
t.Fatal(err)
4944+
}
4945+
wantMark := &Mark{
4946+
Row: 3,
4947+
Col: 0,
4948+
Buffer: 0,
4949+
BufferName: bufName,
4950+
}
4951+
4952+
if !reflect.DeepEqual(gotMark, wantMark) {
4953+
t.Fatalf("got %#v mark but want %#v", gotMark, wantMark)
4954+
}
4955+
4956+
deleted, err := v.DeleteMark(mark)
4957+
if err != nil {
4958+
t.Fatal(err)
4959+
}
4960+
if !deleted {
4961+
t.Fatalf("could not delete %s mark", mark)
4962+
}
4963+
4964+
gotMark2, err := v.Mark(mark, make(map[string]interface{}))
4965+
if err != nil {
4966+
t.Fatal(err)
4967+
}
4968+
wantMark2 := &Mark{
4969+
Row: 0,
4970+
Col: 0,
4971+
Buffer: 0,
4972+
BufferName: "",
4973+
}
4974+
4975+
if !reflect.DeepEqual(gotMark2, wantMark2) {
4976+
t.Fatalf("got %#v mark but want %#v", gotMark2, wantMark2)
4977+
}
4978+
})
4979+
4980+
t.Run("Batch", func(t *testing.T) {
4981+
b := v.NewBatch()
4982+
4983+
// set dummy lines
4984+
lines := [][]byte{
4985+
[]byte("a"),
4986+
[]byte("bit of"),
4987+
[]byte("text"),
4988+
}
4989+
b.SetBufferLines(Buffer(0), 0, -1, true, lines)
4990+
if err := b.Execute(); err != nil {
4991+
t.Fatal(err)
4992+
}
4993+
t.Cleanup(func() {
4994+
clearBuffer(t, v, Buffer(0))
4995+
})
4996+
4997+
// set cursor position
4998+
b.SetWindowCursor(Window(0), [2]int{3, 0})
4999+
if err := b.Execute(); err != nil {
5000+
t.Fatal(err)
5001+
}
5002+
5003+
// set buffer name
5004+
cwd, err := os.Getwd() // buffer name is full path
5005+
if err != nil {
5006+
t.Fatal(err)
5007+
}
5008+
// shrink home path
5009+
cwd = strings.ReplaceAll(cwd, os.Getenv("HOME"), "~")
5010+
bufName := filepath.Join(cwd, "test_mark_buffer")
5011+
b.SetBufferName(Buffer(0), bufName)
5012+
if err := b.Execute(); err != nil {
5013+
t.Fatal(err)
5014+
}
5015+
5016+
// set mark
5017+
const mark = "X"
5018+
b.Command(fmt.Sprintf("mark %s", mark))
5019+
if err := b.Execute(); err != nil {
5020+
t.Fatal(err)
5021+
}
5022+
5023+
gotMark := new(Mark)
5024+
b.Mark(mark, make(map[string]interface{}), gotMark)
5025+
if err := b.Execute(); err != nil {
5026+
t.Fatal(err)
5027+
}
5028+
wantMark := &Mark{
5029+
Row: 3,
5030+
Col: 0,
5031+
Buffer: 0,
5032+
BufferName: bufName,
5033+
}
5034+
5035+
if !reflect.DeepEqual(gotMark, wantMark) {
5036+
t.Fatalf("got %#v mark but want %#v", gotMark, wantMark)
5037+
}
5038+
5039+
var deleted bool
5040+
b.DeleteMark(mark, &deleted)
5041+
if err := b.Execute(); err != nil {
5042+
t.Fatal(err)
5043+
}
5044+
if !deleted {
5045+
t.Fatalf("could not delete %s mark", mark)
5046+
}
5047+
5048+
gotMark2 := new(Mark)
5049+
b.Mark(mark, make(map[string]interface{}), gotMark2)
5050+
if err := b.Execute(); err != nil {
5051+
t.Fatal(err)
5052+
}
5053+
wantMark2 := &Mark{
5054+
Row: 0,
5055+
Col: 0,
5056+
Buffer: 0,
5057+
BufferName: "",
5058+
}
5059+
5060+
if !reflect.DeepEqual(gotMark2, wantMark2) {
5061+
t.Fatalf("got %#v mark but want %#v", gotMark2, wantMark2)
5062+
}
5063+
})
5064+
}
5065+
}

0 commit comments

Comments
 (0)