use {
crate::protocol::lsp::TraceValue,
serde::{
Deserialize,
Serialize,
},
};
#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize)]
pub struct SetTraceParams {
pub value: TraceValue,
}
#[derive(Debug, Clone, PartialEq, Eq, 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::*,
crate::protocol::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"]"#,
);
}
}