use core::fmt;
use super::BigComplex;
impl fmt::Display for BigComplex {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
if self.im.is_sign_negative() {
write!(f, "{} - {}i", self.re, self.im.abs())
} else {
write!(f, "{} + {}i", self.re, self.im)
}
}
}
impl fmt::Debug for BigComplex {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("BigComplex")
.field("re", &self.re)
.field("im", &self.im)
.finish()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn display_positive_imag() {
let z = BigComplex::from_f64(1.0, 2.0, 53).expect("finite");
let s = format!("{z}");
assert!(s.contains(" + "), "expected ' + ' in {s:?}");
assert!(s.ends_with('i'), "expected trailing 'i' in {s:?}");
}
#[test]
fn display_negative_imag() {
let z = BigComplex::from_f64(1.0, -2.0, 53).expect("finite");
let s = format!("{z}");
assert!(s.contains(" - "), "expected ' - ' in {s:?}");
assert!(!s.contains("- -"), "double sign in {s:?}");
assert!(s.ends_with('i'), "expected trailing 'i' in {s:?}");
}
#[test]
fn debug_mentions_fields() {
let z = BigComplex::from_f64(1.0, 2.0, 53).expect("finite");
let s = format!("{z:?}");
assert!(s.contains("BigComplex"), "{s:?}");
assert!(s.contains("re"), "{s:?}");
assert!(s.contains("im"), "{s:?}");
}
}