package main

import (
	"testing"

	"hamlog/internal/pskr"
)

// The receiver radius is what makes an opening report evidence about the
// OPERATOR's path rather than someone else's. Both ends of the range destroy
// that: too small and no receiver is ever near enough, too large and the
// reports are about a different part of the world. A stored value that would do
// either has to fall back rather than be honoured.
func TestBandOpenNearKmClamps(t *testing.T) {
	for _, tc := range []struct {
		name string
		raw  string
		want int
	}{
		{"unset falls back", "", pskr.DefaultNearKm},
		{"not a number falls back", "soon", pskr.DefaultNearKm},
		{"zero falls back", "0", pskr.DefaultNearKm},
		{"negative falls back", "-100", pskr.DefaultNearKm},
		{"absurdly tight falls back", "5", pskr.DefaultNearKm},
		{"absurdly wide falls back", "5000", pskr.DefaultNearKm},
		{"a real choice is kept", "100", 100},
		{"the lower bound is kept", "25", 25},
		{"the upper bound is kept", "1000", 1000},
		{"surrounding space is ignored", "  150 ", 150},
	} {
		t.Run(tc.name, func(t *testing.T) {
			if got := bandOpenNearKm(tc.raw); got != tc.want {
				t.Errorf("bandOpenNearKm(%q) = %d, want %d", tc.raw, got, tc.want)
			}
		})
	}
}
