package streamregistry

import (
	"context"
	"testing"
	"time"
)

func TestReleaseStopsDeadlineTimerBeforeItFires(t *testing.T) {
	parent, cancel := context.WithDeadline(context.Background(), time.Now().Add(time.Hour))
	defer cancel()

	registry := New()
	entry, err := registry.Register(parent, "session-a", 1, "server-a")
	if err != nil {
		t.Fatalf("Register: %v", err)
	}
	if entry.deadlineTimer == nil {
		t.Fatal("Register did not install a deadline timer")
	}

	entry.Release()

	// time.Timer.Stop returns false when a timer is already stopped or fired.
	// The deadline is an hour away, so false here directly proves Release
	// stopped the concrete timer rather than relying on first-wins state to
	// hide a callback that still executes later.
	if entry.deadlineTimer.Stop() {
		t.Fatal("deadline timer was still active after Release")
	}
}
