mod common;
use common::compare_message;
use fluent_embed::localize;
use icu_locale::langid;
use rstest::rstest;
#[localize("tests/locale/**/placeables.ftl")]
pub enum Message {
OpenTabs { quantity: u64 },
Person { name: String },
TabStatus { name: String, quantity: u64 },
}
#[rstest]
#[case::zero(0_u64, "0")]
#[case::two(2_u64, "2")]
#[case::max(u64::MAX, "18,446,744,073,709,551,615")]
fn number(#[case] quantity: u64, #[case] expected: String) {
compare_message(
Message::OpenTabs { quantity },
format!("{expected} tabs open."),
langid!("en-US"),
)
}
#[rstest]
#[case::empty("")]
#[case::single_hyphen(r#"""#)]
#[case::english("Ferris")]
#[case::accent("Férris")]
#[case::unicode("蟹")]
fn string(#[case] name: String) {
compare_message(
Message::Person { name: name.clone() },
format!("How many tabs does {name} have open?"),
langid!("en-US"),
)
}
#[rstest]
#[case::empty(0_u64, "0", "")]
#[case::simple(2_u64, "2", "Ferris")]
#[case::complex(u64::MAX, "18,446,744,073,709,551,615", "蟹")]
fn numbers_and_strings(#[case] quantity: u64, #[case] expected: String, #[case] name: String) {
compare_message(
Message::TabStatus {
name: name.clone(),
quantity,
},
format!("{name} has {expected} tabs open!"),
langid!("en-US"),
);
}