package rewindplan

import (
	"testing"
	"time"

	"github.com/stretchr/testify/require"
)

func TestAgentPlanForIDTrimsAndReuses(t *testing.T) {
	plans := map[string]*AgentPlan{}
	first := AgentPlanForID(plans, " agt_1 ")
	first.AgentID = "agt_1"
	require.Same(t, first, AgentPlanForID(plans, "agt_1"))
	require.Equal(t, "agt_1", plans["agt_1"].AgentID)
}

func TestSortAgentPlans(t *testing.T) {
	now := time.Now()
	plans := []AgentPlan{
		{AgentID: "b", FirstTouchGlobalSeq: 2, FirstTouchAt: now},
		{AgentID: "a", FirstTouchGlobalSeq: 1, FirstTouchAt: now.Add(time.Second)},
	}
	SortAgentPlans(plans)
	require.Equal(t, []string{"a", "b"}, []string{plans[0].AgentID, plans[1].AgentID})
}

func TestNormalizeNonEmptyStrings(t *testing.T) {
	require.Equal(t, []string{"a", "b"}, NormalizeNonEmptyStrings([]string{" a ", "", "a", "b"}))
	require.Nil(t, NormalizeNonEmptyStrings(nil))
}

func TestSameStringSliceTrims(t *testing.T) {
	require.True(t, SameStringSlice([]string{" a ", "b"}, []string{"a", " b "}))
	require.False(t, SameStringSlice([]string{"a"}, []string{"a", "b"}))
}
