package ai import ( "testing" "crypto-miner-server/internal/strategy" ) func TestPersonaMiningTierOrderDistinctFromSpread(t *testing.T) { spread := PersonaSpreadTierOrder(PersonaAggressive) mine := PersonaMiningTierOrder(PersonaAggressive) if len(mine) == 0 { t.Fatal("empty mining order") } if mine[0] == spread[0] { t.Fatalf("mining front %q should differ from spread front %q", mine[0], spread[0]) } } func TestPersonaContingencyBranchOrder(t *testing.T) { silent := PersonaContingencyBranchOrder(PersonaSilent) if silent[0] != "container" { t.Fatalf("silent=%v", silent) } agg := PersonaContingencyBranchOrder(PersonaAggressive) if agg[0] != "inprocess" { t.Fatalf("aggressive=%v", agg) } } func TestBuildContingencyPolicyRequiresAIControl(t *testing.T) { if BuildContingencyPolicy(false, PersonaBalanced) != nil { t.Fatal("expected nil when ai control off") } p := BuildContingencyPolicy(true, PersonaSilent) if p == nil || p["enabled"] != true { t.Fatalf("policy=%v", p) } } func TestComposeContingencyBranchParamsUsesGraftNotSpread(t *testing.T) { graft := &strategy.GraftPolicy{ GraftTier: "docker", TierOrder: []string{"docker", "wsl"}, } out := ComposeContingencyBranchParams(PersonaBalanced, graft, "test") if out["force_method"] != "container" { t.Fatalf("force=%v", out["force_method"]) } tiers, _ := out["mining_tiers"].([]string) if len(tiers) == 0 { t.Fatal("expected mining_tiers") } }