|
@@ -46,13 +46,6 @@ impl Wire for TXT {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if len == total_len {
|
|
|
- debug!("Length matches expected");
|
|
|
- }
|
|
|
- else {
|
|
|
- warn!("Expected length {} but read {} bytes", len, buf.len());
|
|
|
- }
|
|
|
-
|
|
|
let message = String::from_utf8_lossy(&buf).to_string();
|
|
|
trace!("Parsed message -> {:?}", message);
|
|
|
|
|
@@ -132,6 +125,61 @@ mod test {
|
|
|
// did you know you can just _write_ code like this, and nobody will stop you?
|
|
|
}
|
|
|
|
|
|
+ #[test]
|
|
|
+ fn right_at_the_limit() {
|
|
|
+ let buf = &[
|
|
|
+ 0xFE, // message chunk length
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
|
|
|
+ 0x42, // exactly two hundred and fifty four ‘B’s (a hive)
|
|
|
+ ];
|
|
|
+
|
|
|
+ assert_eq!(TXT::read(buf.len() as _, &mut Cursor::new(buf)).unwrap(),
|
|
|
+ TXT {
|
|
|
+ message: String::from("BBBBBBBBBBBBBBBBBBBBBBBBBBBBB\
|
|
|
+ BBBBBBBBBBBBBBBBBBBBBBBBBBBBB\
|
|
|
+ BBBBBBBBBBBBBBBBBBBBBBBBBBBBB\
|
|
|
+ BBBBBBBBBBBBBBBBBBBBBBBBBBBBB\
|
|
|
+ BBBBBBBBBBBBBBBBBBBBBBBBBBBBB\
|
|
|
+ BBBBBBBBBBBBBBBBBBBBBBBBBBBBB\
|
|
|
+ BBBBBBBBBBBBBBBBBBBBBBBBBBBBB\
|
|
|
+ BBBBBBBBBBBBBBBBBBBBBBBBBBBBB\
|
|
|
+ BBBBBBBBBBBBBBBBBBBBBB"),
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ #[test]
|
|
|
+ fn incorrect_length() {
|
|
|
+ let buf = &[
|
|
|
+ 0x06, // message chunk length
|
|
|
+ 0x74, 0x78, 0x74, 0x20, 0x6d, 0x65, // message chunk
|
|
|
+ ];
|
|
|
+
|
|
|
+ assert_eq!(TXT::read(123, &mut Cursor::new(buf)),
|
|
|
+ Err(WireError::WrongLabelLength { expected: 123, got: 7 }));
|
|
|
+ }
|
|
|
+
|
|
|
#[test]
|
|
|
fn record_empty() {
|
|
|
assert_eq!(TXT::read(0, &mut Cursor::new(&[])),
|