use fonts::{CurrentTextStyle, UIFontParser};
use std::collections::HashMap;
#[test]
fn test_smart_resolution_priority() {
let parser = UIFontParser::new();
let mut custom_axes = HashMap::new();
custom_axes.insert("wght".to_string(), 500.0); custom_axes.insert("wdth".to_string(), 120.0); custom_axes.insert("slnt".to_string(), 5.0); custom_axes.insert("opsz".to_string(), 14.0);
let current_style = CurrentTextStyle {
weight: Some(400), width: Some(100), slant: Some(10.0), custom_axes,
};
assert_eq!(
parser.get_current_axis_value(¤t_style, "wght"),
Some(400.0)
);
assert_eq!(
parser.get_current_axis_value(¤t_style, "wdth"),
Some(100.0)
);
assert_eq!(
parser.get_current_axis_value(¤t_style, "slnt"),
Some(10.0)
);
assert_eq!(
parser.get_current_axis_value(¤t_style, "opsz"),
Some(14.0)
);
assert_eq!(parser.get_current_axis_value(¤t_style, "ital"), None);
}
#[test]
fn test_smart_resolution_fallback() {
let parser = UIFontParser::new();
let mut custom_axes = HashMap::new();
custom_axes.insert("wght".to_string(), 500.0);
custom_axes.insert("wdth".to_string(), 120.0);
custom_axes.insert("slnt".to_string(), 5.0);
custom_axes.insert("opsz".to_string(), 14.0);
let current_style = CurrentTextStyle {
weight: None, width: None, slant: None, custom_axes,
};
assert_eq!(
parser.get_current_axis_value(¤t_style, "wght"),
Some(500.0)
);
assert_eq!(
parser.get_current_axis_value(¤t_style, "wdth"),
Some(120.0)
);
assert_eq!(
parser.get_current_axis_value(¤t_style, "slnt"),
Some(5.0)
);
assert_eq!(
parser.get_current_axis_value(¤t_style, "opsz"),
Some(14.0)
);
assert_eq!(parser.get_current_axis_value(¤t_style, "ital"), None);
}
#[test]
fn test_smart_resolution_mixed() {
let parser = UIFontParser::new();
let mut custom_axes = HashMap::new();
custom_axes.insert("wght".to_string(), 500.0); custom_axes.insert("wdth".to_string(), 120.0); custom_axes.insert("slnt".to_string(), 5.0); custom_axes.insert("opsz".to_string(), 14.0);
let current_style = CurrentTextStyle {
weight: Some(400), width: None, slant: Some(10.0), custom_axes,
};
assert_eq!(
parser.get_current_axis_value(¤t_style, "wght"),
Some(400.0)
); assert_eq!(
parser.get_current_axis_value(¤t_style, "wdth"),
Some(120.0)
); assert_eq!(
parser.get_current_axis_value(¤t_style, "slnt"),
Some(10.0)
); assert_eq!(
parser.get_current_axis_value(¤t_style, "opsz"),
Some(14.0)
); }
#[test]
fn test_smart_resolution_empty_custom_axes() {
let parser = UIFontParser::new();
let current_style = CurrentTextStyle {
weight: Some(400),
width: Some(100),
slant: Some(10.0),
custom_axes: HashMap::new(), };
assert_eq!(
parser.get_current_axis_value(¤t_style, "wght"),
Some(400.0)
);
assert_eq!(
parser.get_current_axis_value(¤t_style, "wdth"),
Some(100.0)
);
assert_eq!(
parser.get_current_axis_value(¤t_style, "slnt"),
Some(10.0)
);
assert_eq!(parser.get_current_axis_value(¤t_style, "opsz"), None);
assert_eq!(parser.get_current_axis_value(¤t_style, "ital"), None);
}
#[test]
fn test_smart_resolution_none_values() {
let parser = UIFontParser::new();
let current_style = CurrentTextStyle {
weight: None,
width: None,
slant: None,
custom_axes: HashMap::new(),
};
assert_eq!(parser.get_current_axis_value(¤t_style, "wght"), None);
assert_eq!(parser.get_current_axis_value(¤t_style, "wdth"), None);
assert_eq!(parser.get_current_axis_value(¤t_style, "slnt"), None);
assert_eq!(parser.get_current_axis_value(¤t_style, "opsz"), None);
assert_eq!(parser.get_current_axis_value(¤t_style, "ital"), None);
}
#[test]
fn test_italic_flag_special_handling() {
let parser = UIFontParser::new();
let mut custom_axes = HashMap::new();
custom_axes.insert("ital".to_string(), 1.0);
let current_style = CurrentTextStyle {
weight: None,
width: None,
slant: None,
custom_axes,
};
assert_eq!(
parser.get_current_axis_value(¤t_style, "ital"),
Some(1.0)
);
assert_eq!(parser.get_current_axis_value(¤t_style, "wght"), None);
assert_eq!(parser.get_current_axis_value(¤t_style, "wdth"), None);
assert_eq!(parser.get_current_axis_value(¤t_style, "slnt"), None);
}
#[test]
fn test_smart_resolution_realistic_scenario() {
let parser = UIFontParser::new();
let mut custom_axes = HashMap::new();
custom_axes.insert("wght".to_string(), 600.0); custom_axes.insert("wdth".to_string(), 110.0); custom_axes.insert("slnt".to_string(), 0.0); custom_axes.insert("opsz".to_string(), 12.0);
let current_style = CurrentTextStyle {
weight: Some(400), width: None, slant: Some(15.0), custom_axes,
};
assert_eq!(
parser.get_current_axis_value(¤t_style, "wght"),
Some(400.0)
); assert_eq!(
parser.get_current_axis_value(¤t_style, "wdth"),
Some(110.0)
); assert_eq!(
parser.get_current_axis_value(¤t_style, "slnt"),
Some(15.0)
); assert_eq!(
parser.get_current_axis_value(¤t_style, "opsz"),
Some(12.0)
); assert_eq!(parser.get_current_axis_value(¤t_style, "ital"), None); }