github.com/aretext/aretext@v1.3.0/state/mode_test.go (about) 1 package state 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "github.com/aretext/aretext/selection" 9 ) 10 11 func TestNormalToVisualMode(t *testing.T) { 12 state := NewEditorState(100, 100, nil, nil) 13 setInputMode(state, InputModeNormal) 14 ToggleVisualMode(state, selection.ModeChar) 15 assert.Equal(t, InputModeVisual, state.inputMode) 16 assert.Equal(t, selection.ModeChar, state.documentBuffer.selector.Mode()) 17 } 18 19 func TestVisualModeToNormalMode(t *testing.T) { 20 state := NewEditorState(100, 100, nil, nil) 21 ToggleVisualMode(state, selection.ModeChar) 22 setInputMode(state, InputModeNormal) 23 assert.Equal(t, InputModeNormal, state.inputMode) 24 assert.Equal(t, selection.ModeNone, state.documentBuffer.selector.Mode()) 25 } 26 27 func TestVisualModeToInsertMode(t *testing.T) { 28 state := NewEditorState(100, 100, nil, nil) 29 ToggleVisualMode(state, selection.ModeChar) 30 setInputMode(state, InputModeInsert) 31 assert.Equal(t, InputModeInsert, state.inputMode) 32 assert.Equal(t, selection.ModeNone, state.documentBuffer.selector.Mode()) 33 } 34 35 func TestToggleVisualModeSameSelectionMode(t *testing.T) { 36 testCases := []struct { 37 name string 38 selectionMode selection.Mode 39 }{ 40 { 41 name: "charwise", 42 selectionMode: selection.ModeChar, 43 }, 44 { 45 name: "linewise", 46 selectionMode: selection.ModeLine, 47 }, 48 } 49 50 for _, tc := range testCases { 51 t.Run(tc.name, func(t *testing.T) { 52 state := NewEditorState(100, 100, nil, nil) 53 ToggleVisualMode(state, tc.selectionMode) 54 ToggleVisualMode(state, tc.selectionMode) 55 assert.Equal(t, InputModeNormal, state.inputMode) 56 assert.Equal(t, selection.ModeNone, state.documentBuffer.selector.Mode()) 57 }) 58 } 59 } 60 61 func TestToggleVisualModeDifferentSelectionMode(t *testing.T) { 62 testCases := []struct { 63 name string 64 firstSelectionMode selection.Mode 65 secondSelectionMode selection.Mode 66 }{ 67 { 68 name: "charwise to linewise", 69 firstSelectionMode: selection.ModeChar, 70 secondSelectionMode: selection.ModeLine, 71 }, 72 { 73 name: "linewise to charwise", 74 firstSelectionMode: selection.ModeLine, 75 secondSelectionMode: selection.ModeChar, 76 }, 77 } 78 79 for _, tc := range testCases { 80 t.Run(tc.name, func(t *testing.T) { 81 state := NewEditorState(100, 100, nil, nil) 82 ToggleVisualMode(state, tc.firstSelectionMode) 83 ToggleVisualMode(state, tc.secondSelectionMode) 84 assert.Equal(t, InputModeVisual, state.inputMode) 85 assert.Equal(t, tc.secondSelectionMode, state.documentBuffer.selector.Mode()) 86 }) 87 } 88 }