From a5c645f4022ba651fd9ddc7db3f564c3f8f1718c Mon Sep 17 00:00:00 2001 From: chris west Date: Wed, 11 Nov 2020 15:48:15 -0800 Subject: [PATCH] cp437 test --- src/text.rs | 25 +++++++++++++++++++++++++ tests/CP437.png | Bin 0 -> 15141 bytes tests/CP437.txt | 19 +++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 tests/CP437.png create mode 100644 tests/CP437.txt diff --git a/src/text.rs b/src/text.rs index cc56233..531656c 100644 --- a/src/text.rs +++ b/src/text.rs @@ -242,3 +242,28 @@ impl Text { } } } + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_cp437() { + let body = include_bytes!("../tests/CP437.txt"); + let mut text = Text::from("", body.to_vec(), &Config::default(), false); + text.mode = ui::Mode::Print; + + let res = text.render(); + assert!(!res.contains("╟")); + assert!(!res.contains("≈")); + assert!(!res.contains("Ω")); + assert!(!res.contains("Θ")); + + text.toggle_encoding(); + let res = text.render(); + assert!(res.contains("╟")); + assert!(res.contains("≈")); + assert!(res.contains("Ω")); + assert!(res.contains("Θ")); + } +} diff --git a/tests/CP437.png b/tests/CP437.png new file mode 100644 index 0000000000000000000000000000000000000000..ebee6073264756c17f36a2fa00bbe1b495f721aa GIT binary patch literal 15141 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