1#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
6pub enum SubAgentState {
7 Submitted,
8 Working,
9 Completed,
10 Failed,
11 Canceled,
12}
13
14#[cfg(test)]
15mod tests {
16 use super::*;
17
18 #[test]
19 fn test_all_variants_debug() {
20 assert_eq!(format!("{:?}", SubAgentState::Submitted), "Submitted");
21 assert_eq!(format!("{:?}", SubAgentState::Working), "Working");
22 assert_eq!(format!("{:?}", SubAgentState::Completed), "Completed");
23 assert_eq!(format!("{:?}", SubAgentState::Failed), "Failed");
24 assert_eq!(format!("{:?}", SubAgentState::Canceled), "Canceled");
25 }
26
27 #[test]
28 fn test_clone_and_copy() {
29 let state = SubAgentState::Working;
30 let cloned = state;
31 assert_eq!(state, cloned);
32 let copied: SubAgentState = state;
33 assert_eq!(copied, SubAgentState::Working);
34 }
35
36 #[test]
37 fn test_partial_eq() {
38 assert_eq!(SubAgentState::Completed, SubAgentState::Completed);
39 assert_ne!(SubAgentState::Submitted, SubAgentState::Failed);
40 }
41
42 #[test]
43 fn test_terminal_states_are_distinct_from_active() {
44 let active = [SubAgentState::Submitted, SubAgentState::Working];
45 let terminal = [
46 SubAgentState::Completed,
47 SubAgentState::Failed,
48 SubAgentState::Canceled,
49 ];
50 for a in active {
51 for t in terminal {
52 assert_ne!(a, t);
53 }
54 }
55 }
56}