package notify import "testing" func TestSignalAckPoolPreparedWaitConsumesAck(t *testing.T) { pool := newSignalAckPool() wait := pool.prepare("client", 1001) if ok := pool.deliver("client", 1001); !ok { t.Fatal("deliver should match prepared signal waiter") } if err := pool.waitPrepared(wait, defaultSignalAckTimeout); err != nil { t.Fatalf("waitPrepared failed: %v", err) } } func TestSignalAckPoolCloseScopeCancelsMatchingWaiter(t *testing.T) { pool := newSignalAckPool() waitA := pool.prepare("server:client-a", 1002) waitB := pool.prepare("server:client-b", 1002) pool.closeScope("server:client-a") if err := pool.waitPrepared(waitA, defaultSignalAckTimeout); err == nil || err.Error() != "signal ack canceled" { t.Fatalf("scopeA cancel mismatch: %v", err) } if ok := pool.deliver("server:client-b", 1002); !ok { t.Fatal("scopeB waiter should remain deliverable") } if err := pool.waitPrepared(waitB, defaultSignalAckTimeout); err != nil { t.Fatalf("waitPrepared scopeB failed: %v", err) } }