core/src/unified_exec/async_watcher_tests.rs
39 lines
use super::split_valid_utf8_prefix_with_max;use pretty_assertions::assert_eq;#[test]fn split_valid_utf8_prefix_respects_max_bytes_for_ascii() { let mut buf = b"hello word!".to_vec(); let first = split_valid_utf8_prefix_with_max(&mut buf, /*max_bytes*/ 5).expect("expected prefix"); assert_eq!(first, b"hello".to_vec()); assert_eq!(buf, b" word!".to_vec()); let second = split_valid_utf8_prefix_with_max(&mut buf, /*max_bytes*/ 5).expect("expected prefix"); assert_eq!(second, b" word".to_vec()); assert_eq!(buf, b"!".to_vec());}#[test]fn split_valid_utf8_prefix_avoids_splitting_utf8_codepoints() { // "é" is 2 bytes in UTF-8. With a max of 3 bytes, we should only emit 1 char (2 bytes). let mut buf = "ééé".as_bytes().to_vec(); let first = split_valid_utf8_prefix_with_max(&mut buf, /*max_bytes*/ 3).expect("expected prefix"); assert_eq!(std::str::from_utf8(&first).unwrap(), "é"); assert_eq!(buf, "éé".as_bytes().to_vec());}#[test]fn split_valid_utf8_prefix_makes_progress_on_invalid_utf8() { let mut buf = vec![0xff, b'a', b'b']; let first = split_valid_utf8_prefix_with_max(&mut buf, /*max_bytes*/ 2).expect("expected prefix"); assert_eq!(first, vec![0xff]); assert_eq!(buf, b"ab".to_vec());}