#[cfg(test)]
mod tests {
use crate::*;
#[test]
fn it_formats_some_floats() {
let dollar = Lotus::new("$", 2);
assert_eq!("$ 200.00", dollar.format(200));
}
#[test]
fn it_formats_some_floats_with_some_extras() {
let pound = Lotus::new("GBP", 1);
assert_eq!("GBP 5,000.4", pound.format(5000.35f32));
}
#[test]
fn it_formats_negative_floats() {
let dollar = Lotus::new("$", 3);
assert_eq!("$ (5,000.000)", dollar.format(-5000.0));
}
#[test]
fn it_formats_a_zero_valued_float() {
let dollar = Lotus::new("Rs. ", 2);
assert_eq!("Rs. --", dollar.format(0.00));
}
#[test]
fn it_tests_if_builders_are_working_fine() {
let rupee = LotusBuilder::default()
.symbol("Rs.")
.precision(1)
.format_positive("{symbol} {value}")
.format_negative("{symbol} ({value})")
.format_zero("{symbol} 0.00")
.decimal_str(".")
.thousand_str(" ")
.build()
.unwrap();
assert_eq!("Rs. (2 000.0)", rupee.format(-2000.));
assert_eq!("Rs. 0.00", rupee.format(0.));
assert_eq!("Rs. 2 000 000.0", rupee.format(2_000_000.0));
}
#[test]
fn lets_see_if_defaults_are_working() {
let default_dollar = LotusBuilder::default()
.format_zero("{symbol} 0")
.format_negative("{symbol} neg {value}")
.build()
.unwrap();
assert_eq!("$ 123.00", default_dollar.format(123.0));
assert_eq!("$ neg 123.00", default_dollar.format(-123.0));
assert_eq!("$ 0", default_dollar.format(0.0));
}
#[test]
fn macro_tests() {
assert_eq!("$ 200.00", lotus!(200.0, "$"));
assert_eq!("Rs. 200.00", lotus!(200, "Rs."));
}
#[test]
fn macro_tests_arm_2() {
assert_eq!("2,000,000.00", lotus!(2_000_000.0));
}
}