use crate::reducer::state::AgentChainState;
#[test]
fn test_effective_model_budget_uses_min_across_agent_chain() {
use crate::phases::commit::effective_model_budget_bytes;
let agents = vec![
"claude-opus".to_string(),
"qwen-turbo".to_string(),
"gpt-4".to_string(),
];
let budget = effective_model_budget_bytes(&agents);
assert_eq!(
budget, 100_000,
"budget should be min across agent chain (qwen's 100KB)"
);
}
#[test]
fn test_consumer_signature_changes_with_agent_chain() {
let chain1 = AgentChainState::initial().with_agents(
vec!["claude".to_string()],
vec![vec![]],
crate::agents::AgentRole::Commit,
);
let chain2 = AgentChainState::initial().with_agents(
vec!["claude".to_string(), "qwen".to_string()],
vec![vec![], vec![]],
crate::agents::AgentRole::Commit,
);
let sig1 = chain1.consumer_signature_sha256();
let sig2 = chain2.consumer_signature_sha256();
assert_ne!(
sig1, sig2,
"consumer signature should change when agent chain changes"
);
}
#[test]
fn test_consumer_signature_stable_during_fallback() {
let chain1 = AgentChainState::initial().with_agents(
vec!["claude".to_string(), "qwen".to_string()],
vec![vec![], vec![]],
crate::agents::AgentRole::Commit,
);
let mut chain2 = chain1.clone();
chain2.current_agent_index = 1;
let sig1 = chain1.consumer_signature_sha256();
let sig2 = chain2.consumer_signature_sha256();
assert_eq!(
sig1, sig2,
"consumer signature should be stable when only current_agent_index changes"
);
}