mod common;
use common::compare_message;
use icu_locale::{Locale, locale};
use l10n_embed_derive::localize;
use rstest::rstest;
#[localize("tests/locale/**/selectors.ftl")]
pub enum MessageEnum {
Numbers { unread_emails: u64 },
Plurals { unread_emails: u64 },
}
#[localize("tests/locale/**/selectors.ftl")]
pub struct Numbers {
unread_emails: u64,
}
#[localize("tests/locale/**/selectors.ftl")]
pub struct Plurals {
unread_emails: u64,
}
#[rstest]
#[case::zero_en(locale!("en-US"), 0, "You have no unread emails.")]
#[case::one_en(locale!("en-US"), 1, "You have an unread email.")]
#[case::two_en(locale!("en-US"), 2, "You have 2 unread emails.")]
#[case::max_en(
locale!("en-US"),
u64::MAX,
"You have 18,446,744,073,709,551,615 unread emails."
)]
#[case::zero_fr(locale!("fr"), 0, "Vous n'avez aucun e-mail non lu.")]
#[case::one_fr(locale!("fr"), 1, "Vous avez un e-mail non lu.")]
#[case::two_fr(locale!("fr"), 2, "Vous avez 2 e-mails non lus.")]
#[case::max_fr(locale!("fr"), u64::MAX, "Vous avez 18 446 744 073 709 551 615 e-mails non lus.")]
fn numbers(#[case] locale: Locale, #[case] unread_emails: u64, #[case] expected_message: String) {
compare_message(Numbers { unread_emails }, &expected_message, locale.clone());
compare_message(
MessageEnum::Numbers { unread_emails },
expected_message,
locale,
);
}
#[rstest]
#[case::zero_en(locale!("en-US"), 0, "You have 0 unread emails.")]
#[case::one_en(locale!("en-US"), 1, "You have 1 unread email.")]
#[case::two_en(locale!("en-US"), 2, "You have 2 unread emails.")]
#[case::max_en(
locale!("en-US"),
u64::MAX,
"You have 18,446,744,073,709,551,615 unread emails."
)]
#[case::zero_fr(locale!("fr"), 0, "Vous avez 0 e-mail non lu.")]
#[case::one_fr(locale!("fr"), 1, "Vous avez 1 e-mail non lu.")]
#[case::two_fr(locale!("fr"), 2, "Vous avez 2 e-mails non lus.")]
#[case::max_fr(locale!("fr"), u64::MAX, "Vous avez 18 446 744 073 709 551 615 e-mails non lus.")]
fn plurals(#[case] locale: Locale, #[case] unread_emails: u64, #[case] expected_message: String) {
compare_message(Plurals { unread_emails }, &expected_message, locale.clone());
compare_message(
MessageEnum::Plurals { unread_emails },
expected_message,
locale,
);
}