diff --git a/crates/anstyle-svg/src/lib.rs b/crates/anstyle-svg/src/lib.rs index 3e313be7..216fdbf7 100644 --- a/crates/anstyle-svg/src/lib.rs +++ b/crates/anstyle-svg/src/lib.rs @@ -122,7 +122,7 @@ impl Term { .unwrap(); writeln!(&mut buffer, r#" + + + + +
+ 1 + use anstyle::RgbColor;
+ 2 +
+ 3 #[test]
+ 4 fn rainbow() {
+ 5 let input = std::fs::read_to_string("tests/rainbow.vte").unwrap();
+ 6 let actual = anstyle_svg::Term::new().render_svg(&input);
+ 7 snapbox::assert_data_eq!(actual, snapbox::file!["rainbow.svg": Text].raw());
+ 8 }
+ 9
+ 10 #[test]
+ 11 fn rg_linus() {
+ 12 let input = std::fs::read_to_string("tests/rg_linus.vte").unwrap();
+ 13 let actual = anstyle_svg::Term::new().render_svg(&input);
+ 14 snapbox::assert_data_eq!(actual, snapbox::file!["rg_linus.svg": Text].raw());
+ 15 }
+ 16
+ 17 #[test]
+ 18 fn hyperlink_demo() {
+ 19 let bytes = std::fs::read("tests/hyperlink-demo.vte").unwrap();
+ 20 String::from_utf8(bytes).unwrap();
+ 21 let input = std::fs::read_to_string("tests/hyperlink-demo.vte").unwrap();
+ 22 let actual = anstyle_svg::Term::new().render_svg(&input);
+ 23 snapbox::assert_data_eq!(actual, snapbox::file!["hyperlink-demo.svg": Text].raw());
+ 24 }
+ 25
+ 26 #[test]
+ 27 + fn custom_background_color() {
+ 28 + let bytes = std::fs::read("tests/custom_background_color.vte").unwrap();
+ 29 + String::from_utf8(bytes).unwrap();
+ 30 + let input = std::fs::read_to_string("tests/custom_background_color.vte").unwrap();
+ 31 + let actual = anstyle_svg::Term::new()
+ 32 + .bg_color(anstyle::Color::Rgb(RgbColor(0x18, 0x18, 0x18)))
+ 33 + .render_svg(&input);
+ 34 + snapbox::assert_data_eq!(
+ 35 + actual,
+ 36 + snapbox::file!["custom_background_color.svg": Text].raw()
+ 37 + );
+ 38 + }
+ 39 +
+ 40 + #[test]
+ 41 fn rainbow_html() {
+ 42 let input = std::fs::read_to_string("tests/rainbow.vte").unwrap();
+ 43 let actual = anstyle_svg::Term::new().render_html(&input);
+ 44 snapbox::assert_data_eq!(actual, snapbox::file!["rainbow.html": Text].raw());
+ 45 }
+ 46
+ 47 #[test]
+ 48 fn rg_linus_html() {
+ 49 let input = std::fs::read_to_string("tests/rg_linus.vte").unwrap();
+ 50 let actual = anstyle_svg::Term::new().render_html(&input);
+ 51 snapbox::assert_data_eq!(actual, snapbox::file!["rg_linus.html": Text].raw());
+ 52 }
+ 53
+ 54 #[test]
+ 55 fn hyperlink_demo_html() {
+ 56 let bytes = std::fs::read("tests/hyperlink-demo.vte").unwrap();
+ 57 String::from_utf8(bytes).unwrap();
+ 58 let input = std::fs::read_to_string("tests/hyperlink-demo.vte").unwrap();
+ 59 let actual = anstyle_svg::Term::new().render_html(&input);
+ 60 snapbox::assert_data_eq!(actual, snapbox::file!["hyperlink-demo.html": Text].raw());
+ 61 }
+
+
+ + + diff --git a/crates/anstyle-svg/tests/custom_background_color.svg b/crates/anstyle-svg/tests/custom_background_color.svg new file mode 100644 index 00000000..f5948f4e --- /dev/null +++ b/crates/anstyle-svg/tests/custom_background_color.svg @@ -0,0 +1,153 @@ + + + + + + + 1 + use anstyle::RgbColor; + + 2 + + + 3 #[test] + + 4 fn rainbow() { + + 5 let input = std::fs::read_to_string("tests/rainbow.vte").unwrap(); + + 6 let actual = anstyle_svg::Term::new().render_svg(&input); + + 7 snapbox::assert_data_eq!(actual, snapbox::file!["rainbow.svg": Text].raw()); + + 8 } + + 9 + + 10 #[test] + + 11 fn rg_linus() { + + 12 let input = std::fs::read_to_string("tests/rg_linus.vte").unwrap(); + + 13 let actual = anstyle_svg::Term::new().render_svg(&input); + + 14 snapbox::assert_data_eq!(actual, snapbox::file!["rg_linus.svg": Text].raw()); + + 15 } + + 16 + + 17 #[test] + + 18 fn hyperlink_demo() { + + 19 let bytes = std::fs::read("tests/hyperlink-demo.vte").unwrap(); + + 20 String::from_utf8(bytes).unwrap(); + + 21 let input = std::fs::read_to_string("tests/hyperlink-demo.vte").unwrap(); + + 22 let actual = anstyle_svg::Term::new().render_svg(&input); + + 23 snapbox::assert_data_eq!(actual, snapbox::file!["hyperlink-demo.svg": Text].raw()); + + 24 } + + 25 + + 26 #[test] + + 27 + fn custom_background_color() { + + 28 + let bytes = std::fs::read("tests/custom_background_color.vte").unwrap(); + + 29 + String::from_utf8(bytes).unwrap(); + + 30 + let input = std::fs::read_to_string("tests/custom_background_color.vte").unwrap(); + + 31 + let actual = anstyle_svg::Term::new() + + 32 + .bg_color(anstyle::Color::Rgb(RgbColor(0x18, 0x18, 0x18))) + + 33 + .render_svg(&input); + + 34 + snapbox::assert_data_eq!( + + 35 + actual, + + 36 + snapbox::file!["custom_background_color.svg": Text].raw() + + 37 + ); + + 38 + } + + 39 + + + 40 + #[test] + + 41 fn rainbow_html() { + + 42 let input = std::fs::read_to_string("tests/rainbow.vte").unwrap(); + + 43 let actual = anstyle_svg::Term::new().render_html(&input); + + 44 snapbox::assert_data_eq!(actual, snapbox::file!["rainbow.html": Text].raw()); + + 45 } + + 46 + + 47 #[test] + + 48 fn rg_linus_html() { + + 49 let input = std::fs::read_to_string("tests/rg_linus.vte").unwrap(); + + 50 let actual = anstyle_svg::Term::new().render_html(&input); + + 51 snapbox::assert_data_eq!(actual, snapbox::file!["rg_linus.html": Text].raw()); + + 52 } + + 53 + + 54 #[test] + + 55 fn hyperlink_demo_html() { + + 56 let bytes = std::fs::read("tests/hyperlink-demo.vte").unwrap(); + + 57 String::from_utf8(bytes).unwrap(); + + 58 let input = std::fs::read_to_string("tests/hyperlink-demo.vte").unwrap(); + + 59 let actual = anstyle_svg::Term::new().render_html(&input); + + 60 snapbox::assert_data_eq!(actual, snapbox::file!["hyperlink-demo.html": Text].raw()); + + 61 } + + + + + + diff --git a/crates/anstyle-svg/tests/custom_background_color.vte b/crates/anstyle-svg/tests/custom_background_color.vte new file mode 100644 index 00000000..52b18753 --- /dev/null +++ b/crates/anstyle-svg/tests/custom_background_color.vte @@ -0,0 +1,61 @@ +[38:2:131:148:150m 1 + [38:2:131:148:150m│ [38:2:249:38:114muse[38:2:248:248:242m anstyle::RgbColor; +[38:2:131:148:150m 2 + [38:2:131:148:150m│ +[38:2:131:148:150m 3 [38:2:131:148:150m│ [38:2:248:248:242m#[test] +[38:2:131:148:150m 4 [38:2:131:148:150m│ [38:2:102:217:239mfn[38:2:248:248:242m [38:2:166:226:46mrainbow[38:2:248:248:242m() { +[38:2:131:148:150m 5 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m input [38:2:249:38:114m=[38:2:248:248:242m std::fs::read_to_string([38:2:230:219:116m"tests/rainbow.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m(); +[38:2:131:148:150m 6 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m actual [38:2:249:38:114m=[38:2:248:248:242m anstyle_svg::Term::new().[38:2:102:217:239mrender_svg[38:2:248:248:242m([38:2:249:38:114m&[38:2:248:248:242minput); +[38:2:131:148:150m 7 [38:2:131:148:150m│ [38:2:248:248:242m snapbox::assert_data_eq[38:2:249:38:114m![38:2:248:248:242m(actual, snapbox::file[38:2:249:38:114m![38:2:248:248:242m[[38:2:230:219:116m"rainbow.svg"[38:2:248:248:242m: Text].[38:2:102:217:239mraw[38:2:248:248:242m()); +[38:2:131:148:150m 8 [38:2:131:148:150m│ [38:2:248:248:242m} +[38:2:131:148:150m 9 [38:2:131:148:150m│ +[38:2:131:148:150m 10 [38:2:131:148:150m│ [38:2:248:248:242m#[test] +[38:2:131:148:150m 11 [38:2:131:148:150m│ [38:2:102:217:239mfn[38:2:248:248:242m [38:2:166:226:46mrg_linus[38:2:248:248:242m() { +[38:2:131:148:150m 12 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m input [38:2:249:38:114m=[38:2:248:248:242m std::fs::read_to_string([38:2:230:219:116m"tests/rg_linus.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m(); +[38:2:131:148:150m 13 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m actual [38:2:249:38:114m=[38:2:248:248:242m anstyle_svg::Term::new().[38:2:102:217:239mrender_svg[38:2:248:248:242m([38:2:249:38:114m&[38:2:248:248:242minput); +[38:2:131:148:150m 14 [38:2:131:148:150m│ [38:2:248:248:242m snapbox::assert_data_eq[38:2:249:38:114m![38:2:248:248:242m(actual, snapbox::file[38:2:249:38:114m![38:2:248:248:242m[[38:2:230:219:116m"rg_linus.svg"[38:2:248:248:242m: Text].[38:2:102:217:239mraw[38:2:248:248:242m()); +[38:2:131:148:150m 15 [38:2:131:148:150m│ [38:2:248:248:242m} +[38:2:131:148:150m 16 [38:2:131:148:150m│ +[38:2:131:148:150m 17 [38:2:131:148:150m│ [38:2:248:248:242m#[test] +[38:2:131:148:150m 18 [38:2:131:148:150m│ [38:2:102:217:239mfn[38:2:248:248:242m [38:2:166:226:46mhyperlink_demo[38:2:248:248:242m() { +[38:2:131:148:150m 19 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m bytes [38:2:249:38:114m=[38:2:248:248:242m std::fs::read([38:2:230:219:116m"tests/hyperlink-demo.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m(); +[38:2:131:148:150m 20 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:166:226:46mString[38:2:248:248:242m::from_utf8(bytes).[38:2:102:217:239munwrap[38:2:248:248:242m(); +[38:2:131:148:150m 21 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m input [38:2:249:38:114m=[38:2:248:248:242m std::fs::read_to_string([38:2:230:219:116m"tests/hyperlink-demo.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m(); +[38:2:131:148:150m 22 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m actual [38:2:249:38:114m=[38:2:248:248:242m anstyle_svg::Term::new().[38:2:102:217:239mrender_svg[38:2:248:248:242m([38:2:249:38:114m&[38:2:248:248:242minput); +[38:2:131:148:150m 23 [38:2:131:148:150m│ [38:2:248:248:242m snapbox::assert_data_eq[38:2:249:38:114m![38:2:248:248:242m(actual, snapbox::file[38:2:249:38:114m![38:2:248:248:242m[[38:2:230:219:116m"hyperlink-demo.svg"[38:2:248:248:242m: Text].[38:2:102:217:239mraw[38:2:248:248:242m()); +[38:2:131:148:150m 24 [38:2:131:148:150m│ [38:2:248:248:242m} +[38:2:131:148:150m 25 [38:2:131:148:150m│ +[38:2:131:148:150m 26 [38:2:131:148:150m│ [38:2:248:248:242m#[test] +[38:2:131:148:150m 27 + [38:2:131:148:150m│ [38:2:102:217:239mfn[38:2:248:248:242m [38:2:166:226:46mcustom_background_color[38:2:248:248:242m() { +[38:2:131:148:150m 28 + [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m bytes [38:2:249:38:114m=[38:2:248:248:242m std::fs::read([38:2:230:219:116m"tests/custom_background_color.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m(); +[38:2:131:148:150m 29 + [38:2:131:148:150m│ [38:2:248:248:242m [38:2:166:226:46mString[38:2:248:248:242m::from_utf8(bytes).[38:2:102:217:239munwrap[38:2:248:248:242m(); +[38:2:131:148:150m 30 + [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m input [38:2:249:38:114m=[38:2:248:248:242m std::fs::read_to_string([38:2:230:219:116m"tests/custom_background_color.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m(); +[38:2:131:148:150m 31 + [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m actual [38:2:249:38:114m=[38:2:248:248:242m anstyle_svg::Term::new() +[38:2:131:148:150m 32 + [38:2:131:148:150m│ [38:2:248:248:242m .[38:2:102:217:239mbg_color[38:2:248:248:242m(anstyle::Color::Rgb(RgbColor([38:2:190:132:255m0x18[38:2:248:248:242m, [38:2:190:132:255m0x18[38:2:248:248:242m, [38:2:190:132:255m0x18[38:2:248:248:242m))) +[38:2:131:148:150m 33 + [38:2:131:148:150m│ [38:2:248:248:242m .[38:2:102:217:239mrender_svg[38:2:248:248:242m([38:2:249:38:114m&[38:2:248:248:242minput); +[38:2:131:148:150m 34 + [38:2:131:148:150m│ [38:2:248:248:242m snapbox::assert_data_eq[38:2:249:38:114m![38:2:248:248:242m( +[38:2:131:148:150m 35 + [38:2:131:148:150m│ [38:2:248:248:242m actual, +[38:2:131:148:150m 36 + [38:2:131:148:150m│ [38:2:248:248:242m snapbox::file[38:2:249:38:114m![38:2:248:248:242m[[38:2:230:219:116m"custom_background_color.svg"[38:2:248:248:242m: Text].[38:2:102:217:239mraw[38:2:248:248:242m() +[38:2:131:148:150m 37 + [38:2:131:148:150m│ [38:2:248:248:242m ); +[38:2:131:148:150m 38 + [38:2:131:148:150m│ [38:2:248:248:242m} +[38:2:131:148:150m 39 + [38:2:131:148:150m│ +[38:2:131:148:150m 40 + [38:2:131:148:150m│ [38:2:248:248:242m#[test] +[38:2:131:148:150m 41 [38:2:131:148:150m│ [38:2:102:217:239mfn[38:2:248:248:242m [38:2:166:226:46mrainbow_html[38:2:248:248:242m() { +[38:2:131:148:150m 42 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m input [38:2:249:38:114m=[38:2:248:248:242m std::fs::read_to_string([38:2:230:219:116m"tests/rainbow.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m(); +[38:2:131:148:150m 43 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m actual [38:2:249:38:114m=[38:2:248:248:242m anstyle_svg::Term::new().[38:2:102:217:239mrender_html[38:2:248:248:242m([38:2:249:38:114m&[38:2:248:248:242minput); +[38:2:131:148:150m 44 [38:2:131:148:150m│ [38:2:248:248:242m snapbox::assert_data_eq[38:2:249:38:114m![38:2:248:248:242m(actual, snapbox::file[38:2:249:38:114m![38:2:248:248:242m[[38:2:230:219:116m"rainbow.html"[38:2:248:248:242m: Text].[38:2:102:217:239mraw[38:2:248:248:242m()); +[38:2:131:148:150m 45 [38:2:131:148:150m│ [38:2:248:248:242m} +[38:2:131:148:150m 46 [38:2:131:148:150m│ +[38:2:131:148:150m 47 [38:2:131:148:150m│ [38:2:248:248:242m#[test] +[38:2:131:148:150m 48 [38:2:131:148:150m│ [38:2:102:217:239mfn[38:2:248:248:242m [38:2:166:226:46mrg_linus_html[38:2:248:248:242m() { +[38:2:131:148:150m 49 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m input [38:2:249:38:114m=[38:2:248:248:242m std::fs::read_to_string([38:2:230:219:116m"tests/rg_linus.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m(); +[38:2:131:148:150m 50 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m actual [38:2:249:38:114m=[38:2:248:248:242m anstyle_svg::Term::new().[38:2:102:217:239mrender_html[38:2:248:248:242m([38:2:249:38:114m&[38:2:248:248:242minput); +[38:2:131:148:150m 51 [38:2:131:148:150m│ [38:2:248:248:242m snapbox::assert_data_eq[38:2:249:38:114m![38:2:248:248:242m(actual, snapbox::file[38:2:249:38:114m![38:2:248:248:242m[[38:2:230:219:116m"rg_linus.html"[38:2:248:248:242m: Text].[38:2:102:217:239mraw[38:2:248:248:242m()); +[38:2:131:148:150m 52 [38:2:131:148:150m│ [38:2:248:248:242m} +[38:2:131:148:150m 53 [38:2:131:148:150m│ +[38:2:131:148:150m 54 [38:2:131:148:150m│ [38:2:248:248:242m#[test] +[38:2:131:148:150m 55 [38:2:131:148:150m│ [38:2:102:217:239mfn[38:2:248:248:242m [38:2:166:226:46mhyperlink_demo_html[38:2:248:248:242m() { +[38:2:131:148:150m 56 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m bytes [38:2:249:38:114m=[38:2:248:248:242m std::fs::read([38:2:230:219:116m"tests/hyperlink-demo.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m(); +[38:2:131:148:150m 57 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:166:226:46mString[38:2:248:248:242m::from_utf8(bytes).[38:2:102:217:239munwrap[38:2:248:248:242m(); +[38:2:131:148:150m 58 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m input [38:2:249:38:114m=[38:2:248:248:242m std::fs::read_to_string([38:2:230:219:116m"tests/hyperlink-demo.vte"[38:2:248:248:242m).[38:2:102:217:239munwrap[38:2:248:248:242m(); +[38:2:131:148:150m 59 [38:2:131:148:150m│ [38:2:248:248:242m [38:2:102:217:239mlet[38:2:248:248:242m actual [38:2:249:38:114m=[38:2:248:248:242m anstyle_svg::Term::new().[38:2:102:217:239mrender_html[38:2:248:248:242m([38:2:249:38:114m&[38:2:248:248:242minput); +[38:2:131:148:150m 60 [38:2:131:148:150m│ [38:2:248:248:242m snapbox::assert_data_eq[38:2:249:38:114m![38:2:248:248:242m(actual, snapbox::file[38:2:249:38:114m![38:2:248:248:242m[[38:2:230:219:116m"hyperlink-demo.html"[38:2:248:248:242m: Text].[38:2:102:217:239mraw[38:2:248:248:242m()); +[38:2:131:148:150m 61 [38:2:131:148:150m│ [38:2:248:248:242m} diff --git a/crates/anstyle-svg/tests/hyperlink-demo.svg b/crates/anstyle-svg/tests/hyperlink-demo.svg index fe1ed361..02d537f4 100644 --- a/crates/anstyle-svg/tests/hyperlink-demo.svg +++ b/crates/anstyle-svg/tests/hyperlink-demo.svg @@ -1,7 +1,7 @@