package profile

import (
	"testing"

	"github.com/alecthomas/assert/v2"
	"github.com/stretchr/testify/require"
)

func TestInsertOrShift(t *testing.T) {
	tests := []struct {
		name     string
		profile Profile
		index   int
		value   string
		expected []string
	}{
		{
			name:     "Insert within range",
			profile:  Profile{ProfileItems: []string{"A", "B", "C"}, Max: 5},
			index:    1,
			value:    "X",
			expected: []string{"A", "X"},
		},
		{
			name:     "Insert beyond range",
			profile:  Profile{ProfileItems: []string{"A"}, Max: 5},
			index:    3,
			value:    "Y",
			expected: []string{"A", "0", "0", "Y"},
		},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			p := tt.profile
			p.InsertOrShift(tt.index, tt.value)
			require.NotNil(t, p.ProfileItems)
			assert.Equal(t, tt.expected, p.ProfileItems)
		})
	}
}