package scheduler

import (
	"testing"
	"time"

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

func TestScheduler(t *testing.T) {
	tm1 := time.Date(2020, 6, 5, 12, 0, 0, 0, time.UTC)
	tm2 := tm1.Add(time.Minute)

	s := New()
	s.Add(tm2, "a")
	{
		tm, key := s.Next()
		assert.Equal(t, tm2, tm)
		assert.Equal(t, "a", key)
	}
	s.Add(tm1, "b")
	{
		tm, key := s.Next()
		assert.Equal(t, tm1, tm)
		assert.Equal(t, "b", key)
	}
	s.Remove("b")
	{
		tm, key := s.Next()
		assert.Equal(t, tm2, tm)
		assert.Equal(t, "a", key)
	}
	s.Remove("a")
	{
		tm, key := s.Next()
		assert.Equal(t, maxTime, tm)
		assert.Equal(t, "", key)
	}
}