1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
use serde::{Deserialize, Serialize};
#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
pub struct SetTraceParams {
pub value: TraceValue,
}
#[derive(Debug, Eq, PartialEq, Clone, Copy, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub enum TraceValue {
Off,
Messages,
Verbose,
}
impl Default for TraceValue {
fn default() -> TraceValue {
TraceValue::Off
}
}
#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct LogTraceParams {
pub message: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub verbose: Option<String>,
}
#[cfg(test)]
mod tests {
use super::*;
use crate::tests::test_serialization;
#[test]
fn test_set_trace_params() {
test_serialization(
&SetTraceParams {
value: TraceValue::Off,
},
r#"{"value":"off"}"#,
);
}
#[test]
fn test_log_trace_params() {
test_serialization(
&LogTraceParams {
message: "message".into(),
verbose: None,
},
r#"{"message":"message"}"#,
);
test_serialization(
&LogTraceParams {
message: "message".into(),
verbose: Some("verbose".into()),
},
r#"{"message":"message","verbose":"verbose"}"#,
);
}
#[test]
fn test_trace_value() {
test_serialization(
&vec![TraceValue::Off, TraceValue::Messages, TraceValue::Verbose],
r#"["off","messages","verbose"]"#,
);
}
}