anyclaw_sdk_agent/
error.rs1#[derive(Debug, thiserror::Error)]
3pub enum AgentSdkError {
4 #[error("Protocol error: {0}")]
6 Protocol(String),
7 #[error("Transform error: {0}")]
9 Transform(String),
10 #[error("Serialization error: {0}")]
12 Serde(#[from] serde_json::Error),
13}
14
15#[cfg(test)]
16mod tests {
17 use super::*;
18 use rstest::rstest;
19
20 #[rstest]
21 fn when_protocol_error_displayed_then_contains_message() {
22 let err = AgentSdkError::Protocol("unexpected initialize".into());
23 assert_eq!(err.to_string(), "Protocol error: unexpected initialize");
24 }
25
26 #[rstest]
27 fn when_transform_error_displayed_then_contains_message() {
28 let err = AgentSdkError::Transform("failed to inject prompt".into());
29 assert_eq!(err.to_string(), "Transform error: failed to inject prompt");
30 }
31
32 #[rstest]
33 fn when_serde_error_converted_then_displays_serialization_error() {
34 let json_err = serde_json::from_str::<serde_json::Value>("not json").unwrap_err();
35 let err: AgentSdkError = json_err.into();
36 assert!(matches!(err, AgentSdkError::Serde(_)));
37 assert!(err.to_string().starts_with("Serialization error:"));
38 }
39
40 #[rstest]
41 fn when_agent_sdk_error_checked_then_implements_std_error() {
42 let err = AgentSdkError::Protocol("test".into());
43 let _: &dyn std::error::Error = &err;
44 }
45}