use crate::zip::cp437::{from_char, is_cp437, to_char, FromCp437}; use crate::zip::{bit::DeflateMode, BitFlag}; #[test] fn test_bit_flag() { macro_rules! bit_flag { ($($get:ident $set:ident)+) => { $( let mut bit_flag = BitFlag::new(0); assert_eq!(bit_flag.$get(), false); bit_flag.$set(true); assert_eq!(bit_flag.$get(), true); bit_flag.$set(false); assert_eq!(bit_flag.$get(), false); )+ }; } bit_flag!( is_encrypted set_encrypted is_imploding_8k set_imploding_8k is_imploding_3sf_trees set_imploding_3sf_trees is_lzma_has_eos_marker set_lzma_has_eos_marker is_has_data_descriptor set_has_data_descriptor is_patched_data set_patched_data is_strong_encryption set_strong_encryption is_utf8 set_utf8 is_cd_encryption set_cd_encryption ); let mut bit_flag = BitFlag::new(0); assert_eq!(bit_flag.deflate_mode(), DeflateMode::Normal); bit_flag.set_deflate_mode(DeflateMode::Maximum); assert_eq!(bit_flag.deflate_mode(), DeflateMode::Maximum); bit_flag.set_deflate_mode(DeflateMode::Fast); assert_eq!(bit_flag.deflate_mode(), DeflateMode::Fast); bit_flag.set_deflate_mode(DeflateMode::SuperFast); assert_eq!(bit_flag.deflate_mode(), DeflateMode::SuperFast); bit_flag.set_deflate_mode(DeflateMode::Normal); assert_eq!(bit_flag.deflate_mode(), DeflateMode::Normal); } #[test] fn test_cp437() { for b in 0..=255 { assert_eq!(from_char(to_char(b)).unwrap(), b); assert!(is_cp437(to_char(b)), "byte: {}", b); } assert_eq!(from_char('Σ'), Some(228)); assert_eq!(from_char('§'), None); assert!(is_cp437('Σ')); assert!(!is_cp437('§')); assert_eq!( Vec::from_cp437("hello world").unwrap(), [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100] ); assert_eq!( String::from_cp437([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]), "hello world" ); assert_eq!( Vec::from_cp437("ABCDEFGHIJKLMNOPQRSTUVWXYZ").unwrap(), (65..=90).collect::>() ); assert_eq!( String::from_cp437((97..=122).collect::>()), "abcdefghijklmnopqrstuvwxyz" ); }