rmcp-client/src/executor_process_transport_tests.rs
72 lines
use bytes::BytesMut;use pretty_assertions::assert_eq;use super::LineBuffer;#[test]fn searches_only_new_bytes_after_partial_line() { let mut buffer = LineBuffer::default(); buffer.extend_from_slice(b"partial"); assert_eq!(buffer.take_line(), None); assert_eq!( buffer, LineBuffer { bytes: BytesMut::from(&b"partial"[..]), scanned_len: 7, } ); buffer.extend_from_slice(b" line"); assert_eq!(buffer.take_line(), None); assert_eq!( buffer, LineBuffer { bytes: BytesMut::from(&b"partial line"[..]), scanned_len: 12, } ); buffer.extend_from_slice(b"\nnext"); assert_eq!( buffer.take_line(), Some(BytesMut::from(&b"partial line"[..])) ); assert_eq!( buffer, LineBuffer { bytes: BytesMut::from(&b"next"[..]), scanned_len: 0, } );}#[test]fn splits_multiple_lines_and_retains_partial_tail() { let mut buffer = LineBuffer::default(); buffer.extend_from_slice(b"first\nsecond\npartial"); assert_eq!(buffer.take_line(), Some(BytesMut::from(&b"first"[..]))); assert_eq!(buffer.take_line(), Some(BytesMut::from(&b"second"[..]))); assert_eq!(buffer.take_line(), None); assert_eq!( buffer, LineBuffer { bytes: BytesMut::from(&b"partial"[..]), scanned_len: 7, } );}#[test]fn takes_unterminated_remaining_bytes_at_eof() { let mut buffer = LineBuffer::default(); buffer.extend_from_slice(b"remaining"); assert_eq!(buffer.take_line(), None); assert_eq!( buffer.take_remaining(), Some(BytesMut::from(&b"remaining"[..])) ); assert_eq!(buffer, LineBuffer::default());}