diff --git a/tests/images/text_decorations.png b/tests/images/text_decorations.png new file mode 100644 index 0000000..76dae54 --- /dev/null +++ b/tests/images/text_decorations.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8639df22ce9e580c5e75dd1163cf05a79691d18ed49156d173a9e7222db44538 +size 16685 diff --git a/tests/text_decorations.rs b/tests/text_decorations.rs new file mode 100644 index 0000000..be0d343 --- /dev/null +++ b/tests/text_decorations.rs @@ -0,0 +1,51 @@ +use common::DrawTestCfg; +use cosmic_text::{Attrs, Color, Family, UnderlineStyle}; + +mod common; + +fn base_attrs() -> Attrs<'static> { + Attrs::new().family(Family::Name("Noto Sans")) +} + +/// Single test covering all decoration variants: +/// - Single underline, double underline +/// - Strikethrough, overline +/// - Colored underline (red), colored strikethrough (cyan) +/// - All three combined on one span +/// - Plain text (no decoration) between spans +#[test] +fn test_text_decorations() { + let base = base_attrs(); + let red = Color::rgb(0xFF, 0x00, 0x00); + let cyan = Color::rgb(0x00, 0xFF, 0xFF); + + DrawTestCfg::new("text_decorations") + .font_size(20., 26.) + .font_attrs(base.clone()) + .rich_text(vec![ + ("Under ", base.clone().underline(UnderlineStyle::Single)), + ("Double ", base.clone().underline(UnderlineStyle::Double)), + ("Strike ", base.clone().strikethrough()), + ("Over ", base.clone().overline()), + ( + "RedUl ", + base.clone() + .underline(UnderlineStyle::Single) + .underline_color(red), + ), + ( + "CyanSt ", + base.clone().strikethrough().strikethrough_color(cyan), + ), + ( + "All", + base.clone() + .underline(UnderlineStyle::Single) + .strikethrough() + .overline(), + ), + (" Plain", base), + ]) + .canvas(600, 50) + .validate_text_rendering(); +}