mod attrib_only;
mod msg_element;
mod msg_number;
mod msg_number_fn;
mod msg_select;
mod msg_select_num;
mod msg_string;
mod msg_text;
mod msg_with_attrib;
mod msg_with_var;
mod res_msg_text;
use super::{assert_gen, bundle};
use crate::build::{LineIndex, Message};
use fluent_syntax::ast;
#[test]
fn load_bundle() {
let ftl_string = "hello-world = Hello, world!";
let bundle = bundle(ftl_string);
let msg = bundle
.get_message("hello-world")
.expect("Message doesn't exist.");
let mut errors = vec![];
let pattern = msg.value().expect("Message has no value.");
let value = bundle.format_pattern(pattern, None, &mut errors);
assert_eq!(&value, "Hello, world!");
}
trait AstResourceExt {
fn first_message(&self, src: &str) -> Message;
fn two_messages(&self, src: &str) -> [Message; 2];
}
impl AstResourceExt for ast::Resource<&str> {
fn first_message(&self, src: &str) -> Message {
let lines = LineIndex::new(src);
match &self.body[0] {
ast::Entry::Message(message) => Message::parse(message, &lines, "test.ftl")
.into_iter()
.next()
.unwrap(),
_ => panic!("Expected a message."),
}
}
fn two_messages(&self, src: &str) -> [Message; 2] {
let lines = LineIndex::new(src);
match &self.body[0] {
ast::Entry::Message(message) => {
let msgs = Message::parse(message, &lines, "test.ftl");
assert_eq!(msgs.len(), 2);
msgs.try_into().unwrap()
}
_ => panic!("Expected a message."),
}
}
}