summaryrefslogtreecommitdiffstats
path: root/pkg/gui/lbl/focus_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gui/lbl/focus_test.go')
-rw-r--r--pkg/gui/lbl/focus_test.go100
1 files changed, 100 insertions, 0 deletions
diff --git a/pkg/gui/lbl/focus_test.go b/pkg/gui/lbl/focus_test.go
new file mode 100644
index 000000000..f36191ce5
--- /dev/null
+++ b/pkg/gui/lbl/focus_test.go
@@ -0,0 +1,100 @@
+package lbl
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestNewOrigin(t *testing.T) {
+ type scenario struct {
+ name string
+ origin int
+ bufferHeight int
+ firstLineIdx int
+ lastLineIdx int
+ selectedLineIdx int
+ selectMode selectMode
+ expected int
+ }
+
+ scenarios := []scenario{
+ {
+ name: "selection above scroll window",
+ origin: 50,
+ bufferHeight: 100,
+ firstLineIdx: 10,
+ lastLineIdx: 10,
+ selectedLineIdx: 10,
+ selectMode: LINE,
+ expected: 10,
+ },
+ {
+ name: "selection below scroll window",
+ origin: 0,
+ bufferHeight: 100,
+ firstLineIdx: 150,
+ lastLineIdx: 150,
+ selectedLineIdx: 150,
+ selectMode: LINE,
+ expected: 50,
+ },
+ {
+ name: "selection within scroll window",
+ origin: 0,
+ bufferHeight: 100,
+ 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,
+ 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,
+ 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,
+ firstLineIdx: 40,
+ lastLineIdx: 150,
+ selectedLineIdx: 40,
+ selectMode: RANGE,
+ expected: 40,
+ },
+ {
+ name: "hunk extending beyond both bounds of scroll window",
+ origin: 50,
+ bufferHeight: 100,
+ firstLineIdx: 40,
+ lastLineIdx: 200,
+ selectedLineIdx: 70,
+ selectMode: HUNK,
+ expected: 40,
+ },
+ }
+
+ for _, s := range scenarios {
+ s := s
+ t.Run(s.name, func(t *testing.T) {
+ assert.EqualValues(t, s.expected, calculateOrigin(s.origin, s.bufferHeight, s.firstLineIdx, s.lastLineIdx, s.selectedLineIdx, s.selectMode))
+ })
+ }
+}