added more helper func, cfg validation and testing
Release / Build and Release (push) Successful in 1m4s

This commit is contained in:
2026-03-31 07:54:21 +02:00
parent c1b3d9134e
commit f640f116ec
14 changed files with 999 additions and 56 deletions
+52
View File
@@ -10,3 +10,55 @@ pub struct WaybarOutput {
#[serde(skip_serializing_if = "Option::is_none")]
pub percentage: Option<u8>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_full_output_serialization() {
let output = WaybarOutput {
text: "CPU: 50%".to_string(),
tooltip: Some("Details".to_string()),
class: Some("normal".to_string()),
percentage: Some(50),
};
let json = serde_json::to_string(&output).unwrap();
let val: serde_json::Value = serde_json::from_str(&json).unwrap();
assert_eq!(val["text"], "CPU: 50%");
assert_eq!(val["tooltip"], "Details");
assert_eq!(val["class"], "normal");
assert_eq!(val["percentage"], 50);
}
#[test]
fn test_optional_fields_omitted() {
let output = WaybarOutput {
text: "test".to_string(),
tooltip: None,
class: None,
percentage: None,
};
let json = serde_json::to_string(&output).unwrap();
let val: serde_json::Value = serde_json::from_str(&json).unwrap();
assert_eq!(val["text"], "test");
assert!(val.get("tooltip").is_none());
assert!(val.get("class").is_none());
assert!(val.get("percentage").is_none());
}
#[test]
fn test_partial_optional_fields() {
let output = WaybarOutput {
text: "test".to_string(),
tooltip: Some("tip".to_string()),
class: None,
percentage: Some(75),
};
let json = serde_json::to_string(&output).unwrap();
let val: serde_json::Value = serde_json::from_str(&json).unwrap();
assert_eq!(val["tooltip"], "tip");
assert!(val.get("class").is_none());
assert_eq!(val["percentage"], 75);
}
}