package index
import (
"testing"
"time"
)
// A size refusal is remembered with its version, time and size, and a
// later refusal replaces it.
func TestATreeRefusalIsRemembered(t *testing.T) {
ix := openIndex(t)
if _, _, _, ok, err := ix.TreeRefusal(); err != nil || ok {
t.Fatalf("FAIL: a fresh index reports a refusal: ok=%v err=%v", ok, err)
}
at := time.Date(2026, 10, 24, 13, 42, 57, 0, time.UTC)
if err := ix.TreeRefused("20b649909ac5", 768455335, at); err != nil {
t.Fatal(err)
}
v, gotAt, bytes, ok, err := ix.TreeRefusal()
if err != nil || !ok || v != "20b649909ac5" || !gotAt.Equal(at) || bytes != 768455335 {
t.Fatalf("FAIL: refusal reads %q %s %d ok=%v err=%v", v, gotAt, bytes, ok, err)
}
if err := ix.TreeRefused("next", 800<<20, at.Add(time.Hour)); err != nil {
t.Fatal(err)
}
if v, _, _, _, _ := ix.TreeRefusal(); v != "next" {
t.Errorf("FAIL: a later refusal did not replace the first: %q", v)
}
}