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  }