in src/protocol/memcache/src/response/values.rs [188:230]
fn parse() {
// simple single value response
let value_0 = Value::new(b"0", 0, None, b"1");
assert_eq!(
response(b"VALUE 0 0 1\r\n1\r\nEND\r\n"),
Ok((
&b""[..],
Response::values(vec![value_0.clone()].into_boxed_slice()),
))
);
// binary data for the value
let value_1 = Value::new(b"1", 1, None, b"\0");
assert_eq!(
response(b"VALUE 1 1 1\r\n\0\r\nEND\r\n"),
Ok((
&b""[..],
Response::values(vec![value_1.clone()].into_boxed_slice()),
))
);
// two values in the same response
assert_eq!(
response(b"VALUE 0 0 1\r\n1\r\nVALUE 1 1 1\r\n\0\r\nEND\r\n"),
Ok((
&b""[..],
Response::values(vec![value_0, value_1].into_boxed_slice()),
))
);
// a value with zero-length data and a cas value
let value_2 = Value::new(b"2", 100, Some(42), b"");
assert_eq!(
response(b"VALUE 2 100 0 42\r\n\r\nEND\r\n"),
Ok((&b""[..], Response::values(vec![value_2].into_boxed_slice()),))
);
// empty values response
assert_eq!(
response(b"END\r\n"),
Ok((&b""[..], Response::values(vec![].into_boxed_slice()),))
);
}