Skip to main content

awp_types/
requester.rs

1use serde::{Deserialize, Serialize};
2
3/// Distinguishes between human and agent requesters.
4///
5/// # Example
6///
7/// ```
8/// use awp_types::RequesterType;
9///
10/// let rt = RequesterType::Agent;
11/// assert_eq!(serde_json::to_string(&rt).unwrap(), "\"agent\"");
12/// ```
13#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
14#[serde(rename_all = "lowercase")]
15pub enum RequesterType {
16    Human,
17    Agent,
18}
19
20#[cfg(test)]
21mod tests {
22    use super::*;
23
24    #[test]
25    fn test_serde_round_trip() {
26        for rt in [RequesterType::Human, RequesterType::Agent] {
27            let json = serde_json::to_string(&rt).unwrap();
28            let deserialized: RequesterType = serde_json::from_str(&json).unwrap();
29            assert_eq!(rt, deserialized);
30        }
31    }
32
33    #[test]
34    fn test_serde_lowercase() {
35        assert_eq!(serde_json::to_string(&RequesterType::Human).unwrap(), "\"human\"");
36        assert_eq!(serde_json::to_string(&RequesterType::Agent).unwrap(), "\"agent\"");
37    }
38}