use format_attr::{DebugAttr, DisplayAttr};
#[derive(DisplayAttr, DebugAttr)]
#[fmt("Point({}, {})", self.x, self.y)]
struct Point {
x: i32,
y: i32,
}
#[derive(DisplayAttr, DebugAttr)]
#[fmt("Person: {}", self.name)]
struct Person {
name: String,
age: u32,
}
#[derive(DisplayAttr, DebugAttr)]
#[fmt("{} - {} years old", self.name, self.age)]
struct Employee {
name: String,
age: u32,
}
#[test]
fn test_point_display() {
let p = Point { x: 10, y: 20 };
assert_eq!(format!("{}", p), "Point(10, 20)");
}
#[test]
fn test_point_debug() {
let p = Point { x: 10, y: 20 };
assert_eq!(format!("{:?}", p), "Point(10, 20)");
}
#[test]
fn test_person_display() {
let person = Person {
name: "Alice".to_string(),
age: 30,
};
assert_eq!(format!("{}", person), "Person: Alice");
}
#[test]
fn test_employee_display() {
let emp = Employee {
name: "Bob".to_string(),
age: 25,
};
assert_eq!(format!("{}", emp), "Bob - 25 years old");
}
#[test]
fn test_employee_debug() {
let emp = Employee {
name: "Bob".to_string(),
age: 25,
};
assert_eq!(format!("{:?}", emp), "Bob - 25 years old");
}