Skip to content

Commit 3944b41

Browse files
committed
Add tests for recent changes
1 parent 6654e94 commit 3944b41

File tree

2 files changed

+265
-0
lines changed

2 files changed

+265
-0
lines changed

cmd/grv/key_bindings_test.go

+65
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,68 @@ func TestIsPromptActionCorrectlyIdentifiesPromptActions(t *testing.T) {
128128
}
129129
}
130130
}
131+
132+
func TestMouseEventActionReturnsExpectedActions(t *testing.T) {
133+
mouseEventLeftClick := MouseEvent{
134+
mouseEventType: MetLeftClick,
135+
row: 10,
136+
col: 20,
137+
}
138+
139+
tests := map[MouseEvent]Action{
140+
mouseEventLeftClick: Action{
141+
ActionType: ActionMouseSelect,
142+
Args: []interface{}{mouseEventLeftClick},
143+
},
144+
MouseEvent{mouseEventType: MetScrollDown}: Action{ActionType: ActionMouseScrollDown},
145+
MouseEvent{mouseEventType: MetScrollUp}: Action{ActionType: ActionMouseScrollUp},
146+
}
147+
148+
for mouseEvent, expectedAction := range tests {
149+
actualAction, err := MouseEventAction(mouseEvent)
150+
151+
if err != nil {
152+
t.Errorf("MouseEventAction failed with error: %v", err)
153+
} else if !reflect.DeepEqual(actualAction, expectedAction) {
154+
t.Errorf("Returned action did not match expected action. Actual: %v. Expected: %v", actualAction, expectedAction)
155+
}
156+
}
157+
}
158+
159+
func TestMouseEventActionReturnsAnErrorForAnInvalidMouseEventType(t *testing.T) {
160+
_, err := MouseEventAction(MouseEvent{mouseEventType: MouseEventType(-5)})
161+
162+
if err == nil {
163+
t.Errorf("Expected MouseEventAction to return error for invalid MouseEventType")
164+
}
165+
}
166+
167+
func TestGetMouseEventFromActionExtractsMouseEventFromAction(t *testing.T) {
168+
mouseEventLeftClick := MouseEvent{
169+
mouseEventType: MetLeftClick,
170+
row: 10,
171+
col: 20,
172+
}
173+
action := Action{
174+
ActionType: ActionMouseSelect,
175+
Args: []interface{}{mouseEventLeftClick},
176+
}
177+
178+
actualMouseEvent, err := GetMouseEventFromAction(action)
179+
180+
if err != nil {
181+
t.Errorf("GetMouseEventFromAction failed with error: %v", err)
182+
} else if !reflect.DeepEqual(actualMouseEvent, mouseEventLeftClick) {
183+
t.Errorf("Returned MouseEvent did not match expected event. Actual: %v. Expected: %v", actualMouseEvent, mouseEventLeftClick)
184+
}
185+
}
186+
187+
func TestGetMouseEventReturnsErrorsForInvalidActions(t *testing.T) {
188+
if _, err := GetMouseEventFromAction(Action{}); err == nil {
189+
t.Errorf("Expected GetMouseEventFromAction to return error for action with empty Args")
190+
}
191+
192+
if _, err := GetMouseEventFromAction(Action{Args: []interface{}{5}}); err == nil {
193+
t.Errorf("Expected GetMouseEventFromAction to return error for action with invalid Args")
194+
}
195+
}

cmd/grv/view_pos_test.go

+200
Original file line numberDiff line numberDiff line change
@@ -281,3 +281,203 @@ func TestDetermineViewStartRowDecreasesActiveRowIndexIfItIsGreaterThanTheTotalNu
281281

282282
checkViewPos(expected, actual, t)
283283
}
284+
285+
func TestScrollActiveRowTopSetsViewStartRowIndexToActiveRowIndex(t *testing.T) {
286+
expected := newViewPos(20, 20, 1)
287+
288+
actual := newViewPos(20, 10, 1)
289+
result := actual.ScrollActiveRowTop()
290+
291+
checkViewPos(expected, actual, t)
292+
checkViewPosResult(true, result, t)
293+
}
294+
295+
func TestScrollActiveRowTopDoesntChangeViewStartRowIndexWhenItIsEqualToActiveRowIndex(t *testing.T) {
296+
expected := newViewPos(10, 10, 1)
297+
298+
actual := newViewPos(10, 10, 1)
299+
result := actual.ScrollActiveRowTop()
300+
301+
checkViewPos(expected, actual, t)
302+
checkViewPosResult(false, result, t)
303+
}
304+
305+
func TestScrollActiveRowBottomSetsViewStartRowIndexToBottomOfView(t *testing.T) {
306+
expected := newViewPos(10, 1, 1)
307+
308+
actual := newViewPos(10, 5, 1)
309+
result := actual.ScrollActiveRowBottom(10)
310+
311+
checkViewPos(expected, actual, t)
312+
checkViewPosResult(true, result, t)
313+
}
314+
315+
func TestScrollActiveRowBottomDoesntChangeViewStartRowIndexWhenActiveRowIndexIsAtBottomOfView(t *testing.T) {
316+
expected := newViewPos(10, 1, 1)
317+
318+
actual := newViewPos(10, 1, 1)
319+
result := actual.ScrollActiveRowBottom(10)
320+
321+
checkViewPos(expected, actual, t)
322+
checkViewPosResult(false, result, t)
323+
}
324+
325+
func TestMoveCursorTopPageSetsActiveRowIndexToViewStartRowIndexWhenNotEqual(t *testing.T) {
326+
expected := newViewPos(10, 10, 1)
327+
328+
actual := newViewPos(15, 10, 1)
329+
result := actual.MoveCursorTopPage()
330+
331+
checkViewPos(expected, actual, t)
332+
checkViewPosResult(true, result, t)
333+
}
334+
335+
func TestMoveCursorTopPageDoesntChangeActiveRowIndexToViewStartRowIndexWhenEqual(t *testing.T) {
336+
expected := newViewPos(10, 10, 1)
337+
338+
actual := newViewPos(10, 10, 1)
339+
result := actual.MoveCursorTopPage()
340+
341+
checkViewPos(expected, actual, t)
342+
checkViewPosResult(false, result, t)
343+
}
344+
345+
func TestMoveCursorMiddlePageSetsActiveRowIndexToMiddleOfPageRows(t *testing.T) {
346+
expected := newViewPos(15, 10, 1)
347+
348+
actual := newViewPos(10, 10, 1)
349+
result := actual.MoveCursorMiddlePage(10, 100)
350+
351+
checkViewPos(expected, actual, t)
352+
checkViewPosResult(true, result, t)
353+
}
354+
355+
func TestMoveCursorMiddlePageSetsActiveRowIndexToMiddleOfAvailableRows(t *testing.T) {
356+
expected := newViewPos(12, 10, 1)
357+
358+
actual := newViewPos(10, 10, 1)
359+
result := actual.MoveCursorMiddlePage(10, 14)
360+
361+
checkViewPos(expected, actual, t)
362+
checkViewPosResult(true, result, t)
363+
}
364+
365+
func TestMoveCursorMiddlePageDoesntChangeActiveRowIndexWhenAlreadyInMiddleOfView(t *testing.T) {
366+
expected := newViewPos(15, 10, 1)
367+
368+
actual := newViewPos(15, 10, 1)
369+
result := actual.MoveCursorMiddlePage(10, 100)
370+
371+
checkViewPos(expected, actual, t)
372+
checkViewPosResult(false, result, t)
373+
}
374+
375+
func TestMoveCursorBottomPageSetsActiveRowIndexToLastRowInView(t *testing.T) {
376+
expected := newViewPos(19, 10, 1)
377+
378+
actual := newViewPos(10, 10, 1)
379+
result := actual.MoveCursorBottomPage(10, 100)
380+
381+
checkViewPos(expected, actual, t)
382+
checkViewPosResult(true, result, t)
383+
}
384+
385+
func TestMoveCursorBottomPageSetsActiveRowIndexToLastAvailableRowInView(t *testing.T) {
386+
expected := newViewPos(14, 10, 1)
387+
388+
actual := newViewPos(10, 10, 1)
389+
result := actual.MoveCursorBottomPage(10, 15)
390+
391+
checkViewPos(expected, actual, t)
392+
checkViewPosResult(true, result, t)
393+
}
394+
395+
func TestMoveCursorBottomPageDoesntChangeActiveRowIndexWhenActiveRowIndexIsEqualToLastRowInView(t *testing.T) {
396+
expected := newViewPos(14, 10, 1)
397+
398+
actual := newViewPos(14, 10, 1)
399+
result := actual.MoveCursorBottomPage(10, 15)
400+
401+
checkViewPos(expected, actual, t)
402+
checkViewPosResult(false, result, t)
403+
}
404+
405+
func TestScrollDownIncrementsViewStartRowIndexByScrollRows(t *testing.T) {
406+
expected := newViewPos(15, 12, 1)
407+
408+
actual := newViewPos(15, 10, 1)
409+
result := actual.ScrollDown(100, 10, 2)
410+
411+
checkViewPos(expected, actual, t)
412+
checkViewPosResult(true, result, t)
413+
}
414+
415+
func TestScrollDownIncrementsViewStartRowIndexByScrollRowsAndUpdatesActiveRowIndexWhenOutOfView(t *testing.T) {
416+
expected := newViewPos(20, 20, 1)
417+
418+
actual := newViewPos(15, 10, 1)
419+
result := actual.ScrollDown(100, 10, 10)
420+
421+
checkViewPos(expected, actual, t)
422+
checkViewPosResult(true, result, t)
423+
}
424+
425+
func TestScrollDownKeepsActiveRowIndexOnFirstRowOfViewWhenOnLastPage(t *testing.T) {
426+
expected := newViewPos(10, 10, 1)
427+
428+
actual := newViewPos(10, 10, 1)
429+
result := actual.ScrollDown(20, 10, 5)
430+
431+
checkViewPos(expected, actual, t)
432+
checkViewPosResult(true, result, t)
433+
}
434+
435+
func TestScrollDownDoesntChangeViewStartRowIndexWhenThereAreNoRowsLeftToScrollDownTo(t *testing.T) {
436+
expected := newViewPos(9, 9, 1)
437+
438+
actual := newViewPos(9, 9, 1)
439+
result := actual.ScrollDown(10, 10, 5)
440+
441+
checkViewPos(expected, actual, t)
442+
checkViewPosResult(false, result, t)
443+
}
444+
445+
func TestScrollUpDecrementsViewStartRowIndexByScrollRows(t *testing.T) {
446+
expected := newViewPos(10, 8, 1)
447+
448+
actual := newViewPos(10, 10, 1)
449+
result := actual.ScrollUp(10, 2)
450+
451+
checkViewPos(expected, actual, t)
452+
checkViewPosResult(true, result, t)
453+
}
454+
455+
func TestScrollUpDecrementsViewStartRowIndexByScrollRowsAndUpdatesActiveRowIndexWhenOutOfView(t *testing.T) {
456+
expected := newViewPos(19, 10, 1)
457+
458+
actual := newViewPos(20, 20, 1)
459+
result := actual.ScrollUp(10, 10)
460+
461+
checkViewPos(expected, actual, t)
462+
checkViewPosResult(true, result, t)
463+
}
464+
465+
func TestScrollUpDecrementsViewStartRowIndexByAvailableRowsWhenScrollRowsIsGreater(t *testing.T) {
466+
expected := newViewPos(5, 0, 1)
467+
468+
actual := newViewPos(5, 5, 1)
469+
result := actual.ScrollUp(10, 10)
470+
471+
checkViewPos(expected, actual, t)
472+
checkViewPosResult(true, result, t)
473+
}
474+
475+
func TestScrollUpDoesntChangeViewStartRowIndexWhenAlreadyOnFirstRow(t *testing.T) {
476+
expected := newViewPos(0, 0, 1)
477+
478+
actual := newViewPos(0, 0, 1)
479+
result := actual.ScrollUp(10, 10)
480+
481+
checkViewPos(expected, actual, t)
482+
checkViewPosResult(false, result, t)
483+
}

0 commit comments

Comments
 (0)