File: focus_test.go

package info (click to toggle)
lazygit 0.57.0%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,748 kB
  • sloc: sh: 153; makefile: 76
file content (129 lines) | stat: -rw-r--r-- 3,252 bytes parent folder | download | duplicates (2)
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package patch_exploring

import (
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestNewOrigin(t *testing.T) {
	type scenario struct {
		name            string
		origin          int
		bufferHeight    int
		numLines        int
		firstLineIdx    int
		lastLineIdx     int
		selectedLineIdx int
		selectMode      selectMode
		expected        int
	}

	scenarios := []scenario{
		{
			name:            "selection above scroll window, enough room to put it in the middle",
			origin:          250,
			bufferHeight:    100,
			numLines:        500,
			firstLineIdx:    210,
			lastLineIdx:     210,
			selectedLineIdx: 210,
			selectMode:      LINE,
			expected:        160,
		},
		{
			name:            "selection above scroll window, not enough room to put it in the middle",
			origin:          50,
			bufferHeight:    100,
			numLines:        500,
			firstLineIdx:    10,
			lastLineIdx:     10,
			selectedLineIdx: 10,
			selectMode:      LINE,
			expected:        0,
		},
		{
			name:            "selection below scroll window, enough room to put it in the middle",
			origin:          0,
			bufferHeight:    100,
			numLines:        500,
			firstLineIdx:    150,
			lastLineIdx:     150,
			selectedLineIdx: 150,
			selectMode:      LINE,
			expected:        100,
		},
		{
			name:            "selection below scroll window, not enough room to put it in the middle",
			origin:          0,
			bufferHeight:    100,
			numLines:        200,
			firstLineIdx:    199,
			lastLineIdx:     199,
			selectedLineIdx: 199,
			selectMode:      LINE,
			expected:        100,
		},
		{
			name:            "selection within scroll window",
			origin:          0,
			bufferHeight:    100,
			numLines:        500,
			firstLineIdx:    50,
			lastLineIdx:     50,
			selectedLineIdx: 50,
			selectMode:      LINE,
			expected:        0,
		},
		{
			name:            "range ending below scroll window with selection at end of range",
			origin:          0,
			bufferHeight:    100,
			numLines:        500,
			firstLineIdx:    40,
			lastLineIdx:     150,
			selectedLineIdx: 150,
			selectMode:      RANGE,
			expected:        50,
		},
		{
			name:            "range ending below scroll window with selection at beginning of range",
			origin:          0,
			bufferHeight:    100,
			numLines:        500,
			firstLineIdx:    40,
			lastLineIdx:     150,
			selectedLineIdx: 40,
			selectMode:      RANGE,
			expected:        40,
		},
		{
			name:            "range starting above scroll window with selection at beginning of range",
			origin:          50,
			bufferHeight:    100,
			numLines:        500,
			firstLineIdx:    40,
			lastLineIdx:     150,
			selectedLineIdx: 40,
			selectMode:      RANGE,
			expected:        40,
		},
		{
			name:            "hunk extending beyond both bounds of scroll window",
			origin:          50,
			bufferHeight:    100,
			numLines:        500,
			firstLineIdx:    40,
			lastLineIdx:     200,
			selectedLineIdx: 70,
			selectMode:      HUNK,
			expected:        40,
		},
	}

	for _, s := range scenarios {
		t.Run(s.name, func(t *testing.T) {
			assert.EqualValues(t, s.expected, calculateOrigin(s.origin, s.bufferHeight, s.numLines, s.firstLineIdx, s.lastLineIdx, s.selectedLineIdx, s.selectMode))
		})
	}
}