|
- package pipeline
-
- import (
- "testing"
- "time"
- )
-
- func TestHoldPolicyArchiveBiasesRecord(t *testing.T) {
- policy := Policy{DecisionHoldMs: 1000, Profile: "archive", RefinementStrategy: "archive-oriented"}
- hold := HoldPolicyFromPolicy(policy)
- if hold.RecordMs <= hold.BaseMs {
- t.Fatalf("expected archive profile to extend record hold, got %d vs %d", hold.RecordMs, hold.BaseMs)
- }
- if hold.RefinementMs <= hold.BaseMs {
- t.Fatalf("expected archive profile to extend refinement hold, got %d vs %d", hold.RefinementMs, hold.BaseMs)
- }
- if !containsReason(hold.Reasons, HoldReasonProfileArchive) {
- t.Fatalf("expected profile archive reason, got %+v", hold.Reasons)
- }
- }
-
- func TestHoldPolicyDigitalBiasesDecode(t *testing.T) {
- policy := Policy{DecisionHoldMs: 1000, Profile: "digital-hunting", RefinementStrategy: "digital-hunting"}
- hold := HoldPolicyFromPolicy(policy)
- if hold.DecodeMs <= hold.RecordMs {
- t.Fatalf("expected digital profile to favor decode hold, got decode=%d record=%d", hold.DecodeMs, hold.RecordMs)
- }
- if !containsReason(hold.Reasons, HoldReasonProfileDigital) {
- t.Fatalf("expected profile digital reason, got %+v", hold.Reasons)
- }
- }
-
- func TestAdmitRefinementPlanNoCandidatesReason(t *testing.T) {
- res := AdmitRefinementPlan(RefinementPlan{}, Policy{}, time.Now(), &RefinementHold{Active: map[int64]time.Time{}})
- if res.Admission.Reason != ReasonAdmissionNoCandidates {
- t.Fatalf("expected no-candidates reason, got %s", res.Admission.Reason)
- }
- }
-
- func containsReason(reasons []string, target string) bool {
- for _, r := range reasons {
- if r == target {
- return true
- }
- }
- return false
- }
|