1#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
20pub enum SubAgentState {
21 Submitted,
23 Working,
25 Completed,
27 Failed,
29 Canceled,
31}
32
33#[cfg(test)]
34mod tests {
35 use super::*;
36
37 #[test]
38 fn test_all_variants_debug() {
39 assert_eq!(format!("{:?}", SubAgentState::Submitted), "Submitted");
40 assert_eq!(format!("{:?}", SubAgentState::Working), "Working");
41 assert_eq!(format!("{:?}", SubAgentState::Completed), "Completed");
42 assert_eq!(format!("{:?}", SubAgentState::Failed), "Failed");
43 assert_eq!(format!("{:?}", SubAgentState::Canceled), "Canceled");
44 }
45
46 #[test]
47 fn test_clone_and_copy() {
48 let state = SubAgentState::Working;
49 let cloned = state;
50 assert_eq!(state, cloned);
51 let copied: SubAgentState = state;
52 assert_eq!(copied, SubAgentState::Working);
53 }
54
55 #[test]
56 fn test_partial_eq() {
57 assert_eq!(SubAgentState::Completed, SubAgentState::Completed);
58 assert_ne!(SubAgentState::Submitted, SubAgentState::Failed);
59 }
60
61 #[test]
62 fn test_terminal_states_are_distinct_from_active() {
63 let active = [SubAgentState::Submitted, SubAgentState::Working];
64 let terminal = [
65 SubAgentState::Completed,
66 SubAgentState::Failed,
67 SubAgentState::Canceled,
68 ];
69 for a in active {
70 for t in terminal {
71 assert_ne!(a, t);
72 }
73 }
74 }
75}