mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-09-12 00:26:24 -04:00
92 lines
3.5 KiB
Go
92 lines
3.5 KiB
Go
package gocui
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/gdamore/tcell/v3"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestFirstMouseMovementAfterPressIsDragEvent(t *testing.T) {
|
|
t.Cleanup(resetMouseState)
|
|
resetMouseState()
|
|
|
|
pressEvent := gocuiEventFromTcellEvent(tcell.NewEventMouse(1, 2, tcell.ButtonPrimary, tcell.ModNone))
|
|
unchangedHeldEvent := gocuiEventFromTcellEvent(tcell.NewEventMouse(1, 2, tcell.ButtonPrimary, tcell.ModNone))
|
|
dragEvent := gocuiEventFromTcellEvent(tcell.NewEventMouse(1, 3, tcell.ButtonPrimary, tcell.ModNone))
|
|
|
|
assert.Equal(t, eventMouse, pressEvent.Type)
|
|
assert.Equal(t, MouseLeft, pressEvent.Key.KeyName())
|
|
assert.Equal(t, ModNone, pressEvent.Key.Mod())
|
|
assert.Equal(t, eventNone, unchangedHeldEvent.Type)
|
|
assert.Equal(t, eventMouse, dragEvent.Type)
|
|
assert.Equal(t, MouseLeft, dragEvent.Key.KeyName())
|
|
assert.Equal(t, ModMotion, dragEvent.Key.Mod())
|
|
}
|
|
|
|
func TestMouseReleaseAfterDragIsMouseEvent(t *testing.T) {
|
|
t.Cleanup(resetMouseState)
|
|
resetMouseState()
|
|
|
|
gocuiEventFromTcellEvent(tcell.NewEventMouse(1, 2, tcell.ButtonPrimary, tcell.ModNone))
|
|
gocuiEventFromTcellEvent(tcell.NewEventMouse(1, 3, tcell.ButtonPrimary, tcell.ModNone))
|
|
releaseEvent := gocuiEventFromTcellEvent(tcell.NewEventMouse(1, 3, tcell.ButtonNone, tcell.ModNone))
|
|
|
|
assert.Equal(t, eventMouse, releaseEvent.Type)
|
|
assert.Equal(t, MouseRelease, releaseEvent.Key.KeyName())
|
|
}
|
|
|
|
func TestWholeGestureCarriesPressModifiers(t *testing.T) {
|
|
t.Cleanup(resetMouseState)
|
|
resetMouseState()
|
|
|
|
pressEvent := gocuiEventFromTcellEvent(tcell.NewEventMouse(1, 2, tcell.ButtonPrimary, tcell.ModAlt))
|
|
dragEvent := gocuiEventFromTcellEvent(tcell.NewEventMouse(1, 3, tcell.ButtonPrimary, tcell.ModAlt))
|
|
releaseEvent := gocuiEventFromTcellEvent(tcell.NewEventMouse(1, 3, tcell.ButtonNone, tcell.ModAlt))
|
|
|
|
assert.Equal(t, eventMouse, pressEvent.Type)
|
|
assert.Equal(t, MouseLeft, pressEvent.Key.KeyName())
|
|
assert.Equal(t, ModAlt, pressEvent.Key.Mod())
|
|
assert.Equal(t, eventMouse, dragEvent.Type)
|
|
assert.Equal(t, MouseLeft, dragEvent.Key.KeyName())
|
|
assert.Equal(t, ModAlt|ModMotion, dragEvent.Key.Mod())
|
|
assert.Equal(t, eventMouse, releaseEvent.Type)
|
|
assert.Equal(t, MouseRelease, releaseEvent.Key.KeyName())
|
|
assert.Equal(t, ModAlt, releaseEvent.Key.Mod())
|
|
}
|
|
|
|
func TestModifierChangesWhileButtonHeldAreIgnored(t *testing.T) {
|
|
t.Cleanup(resetMouseState)
|
|
resetMouseState()
|
|
|
|
gocuiEventFromTcellEvent(tcell.NewEventMouse(1, 2, tcell.ButtonPrimary, tcell.ModNone))
|
|
dragEvent := gocuiEventFromTcellEvent(tcell.NewEventMouse(1, 3, tcell.ButtonPrimary, tcell.ModAlt))
|
|
releaseEvent := gocuiEventFromTcellEvent(tcell.NewEventMouse(1, 3, tcell.ButtonNone, tcell.ModAlt))
|
|
|
|
assert.Equal(t, ModMotion, dragEvent.Key.Mod())
|
|
assert.Equal(t, ModNone, releaseEvent.Key.Mod())
|
|
}
|
|
|
|
func TestModifiedClickWithoutDragCarriesModifierOnPressAndRelease(t *testing.T) {
|
|
t.Cleanup(resetMouseState)
|
|
resetMouseState()
|
|
|
|
pressEvent := gocuiEventFromTcellEvent(tcell.NewEventMouse(1, 2, tcell.ButtonPrimary, tcell.ModShift))
|
|
releaseEvent := gocuiEventFromTcellEvent(tcell.NewEventMouse(1, 2, tcell.ButtonNone, tcell.ModShift))
|
|
|
|
assert.Equal(t, eventMouse, pressEvent.Type)
|
|
assert.Equal(t, MouseLeft, pressEvent.Key.KeyName())
|
|
assert.Equal(t, ModShift, pressEvent.Key.Mod())
|
|
assert.Equal(t, eventMouse, releaseEvent.Type)
|
|
assert.Equal(t, MouseRelease, releaseEvent.Key.KeyName())
|
|
assert.Equal(t, ModShift, releaseEvent.Key.Mod())
|
|
}
|
|
|
|
func resetMouseState() {
|
|
lastMouseKey = tcell.ButtonNone
|
|
lastMouseMod = tcell.ModNone
|
|
dragState = NOT_DRAGGING
|
|
lastX = 0
|
|
lastY = 0
|
|
}
|