#[macro_export]
macro_rules! generic_error {
($message:expr) => {
$crate::DiagnosticMessageBuilder::generic_error($message, file!(), line!())
};
}
#[macro_export]
macro_rules! generic_warning {
($message:expr) => {
$crate::DiagnosticMessageBuilder::generic_warning($message, file!(), line!())
};
}
#[cfg(test)]
mod tests {
use crate::DiagnosticKind;
#[test]
fn test_generic_error_macro() {
let error = generic_error!("Test error message");
assert_eq!(error.kind, DiagnosticKind::Error);
assert_eq!(error.code, Some("Q-0-99".to_string())); assert!(error.title.contains("Test error message"));
assert!(error.title.contains(file!()));
assert!(error.title.contains(':'));
}
#[test]
fn test_generic_warning_macro() {
let warning = generic_warning!("Test warning message");
assert_eq!(warning.kind, DiagnosticKind::Warning);
assert_eq!(warning.code, Some("Q-0-99".to_string())); assert!(warning.title.contains("Test warning message"));
assert!(warning.title.contains(file!()));
}
#[test]
fn test_macro_with_format() {
let value = 42;
let error = generic_error!(format!("Invalid value: {}", value));
assert!(error.title.contains("Invalid value: 42"));
}
#[test]
fn test_macro_error_can_be_rendered() {
let error = generic_error!("Render test");
let text = error.to_text(None);
assert!(text.contains("[Q-0-99]")); assert!(text.contains("Render test"));
}
#[test]
fn test_macro_warning_can_be_rendered() {
let warning = generic_warning!("Warning test");
let text = warning.to_text(None);
assert!(text.contains("[Q-0-99]")); assert!(text.contains("Warning test"));
}
}