collectd_plugin/ser/
mod.rs

1use super::Value;
2use serde::{Serialize, Serializer};
3
4impl Serialize for Value {
5    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
6    where
7        S: Serializer,
8    {
9        match *self {
10            Value::Counter(x) => serializer.serialize_u64(x),
11            Value::Gauge(x) => serializer.serialize_f64(x),
12            Value::Derive(x) => serializer.serialize_i64(x),
13            Value::Absolute(x) => serializer.serialize_u64(x),
14        }
15    }
16}
17
18#[cfg(test)]
19mod tests {
20    use serde_test;
21
22    use self::serde_test::{assert_ser_tokens, Token};
23    use super::Value;
24
25    #[test]
26    fn test_ser_value_counter() {
27        assert_ser_tokens(&Value::Counter(10), &[Token::U64(10)]);
28    }
29
30    #[test]
31    fn test_ser_value_gauge() {
32        assert_ser_tokens(&Value::Gauge(1.0), &[Token::F64(1.0)]);
33    }
34
35    #[test]
36    fn test_ser_value_derive() {
37        assert_ser_tokens(&Value::Derive(-5), &[Token::I64(-5)]);
38    }
39
40    #[test]
41    fn test_ser_value_absolute() {
42        assert_ser_tokens(&Value::Absolute(15), &[Token::U64(15)]);
43    }
44}