1use std::path::Path;
2
3use crate::{
4 common::{parse_break_test, UcdFile},
5 error::Error,
6};
7
8#[derive(Clone, Debug, Default, Eq, PartialEq)]
12pub struct LineBreakTest {
13 pub lines: Vec<String>,
16 pub comment: String,
18}
19
20impl UcdFile for LineBreakTest {
21 fn relative_file_path() -> &'static Path {
22 Path::new("auxiliary/LineBreakTest.txt")
23 }
24}
25
26impl std::str::FromStr for LineBreakTest {
27 type Err = Error;
28
29 fn from_str(line: &str) -> Result<LineBreakTest, Error> {
30 let (groups, comment) = parse_break_test(line)?;
31 Ok(LineBreakTest { lines: groups, comment })
32 }
33}
34
35#[cfg(test)]
36mod tests {
37 use super::LineBreakTest;
38
39 #[test]
40 fn parse_test() {
41 let line = "× 1F1F7 × 1F1FA ÷ 1F1F8 × 1F1EA ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER R (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER U (RI) ÷ [30.13] REGIONAL INDICATOR SYMBOL LETTER S (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER E (RI) ÷ [0.3]";
42
43 let row: LineBreakTest = line.parse().unwrap();
44 assert_eq!(
45 row.lines,
46 vec!["\u{1F1F7}\u{1F1FA}", "\u{1F1F8}\u{1F1EA}",]
47 );
48 assert!(row.comment.ends_with("(RI) ÷ [0.3]"));
49 }
50}