Fix tests

This commit is contained in:
Daniel Akhterov 2019-07-26 13:52:51 -07:00
parent 05024dbd0a
commit 7eee44cdc2
6 changed files with 83 additions and 60 deletions

View File

@ -144,9 +144,13 @@ impl<'a> Decoder<'a> {
}
#[inline]
pub fn decode_string_eof(&mut self, length: usize) -> Bytes {
let value = self.buf.slice(self.index, if length >= self.index {
length
pub fn decode_string_eof(&mut self, length: Option<usize>) -> Bytes {
let value = self.buf.slice(self.index, if let Some(len) = length {
if len >= self.index {
len
} else {
self.buf.len()
}
} else {
self.buf.len()
});
@ -181,9 +185,13 @@ impl<'a> Decoder<'a> {
}
#[inline]
pub fn decode_byte_eof(&mut self, length: usize) -> Bytes {
let value = self.buf.slice(self.index, if length >= self.index {
length
pub fn decode_byte_eof(&mut self, length: Option<usize>) -> Bytes {
let value = self.buf.slice(self.index, if let Some(len) = length {
if len >= self.index {
len
} else {
self.buf.len()
}
} else {
self.buf.len()
});
@ -199,7 +207,7 @@ mod tests {
use super::*;
// [X] it_decodes_int_lenenc
// [X] it_decodes_int_lenenc
// [X] it_decodes_int_8
// [X] it_decodes_int_4
// [X] it_decodes_int_3
@ -338,7 +346,7 @@ mod tests {
fn it_decodes_string_eof() {
let buf = Bytes::from(b"\x01".to_vec());
let mut decoder = Decoder::new(&buf);
let string: Bytes = decoder.decode_string_eof(0);
let string: Bytes = decoder.decode_string_eof(None);
assert_eq!(string[0], b'\x01');
assert_eq!(string.len(), 1);
@ -375,9 +383,9 @@ mod tests {
fn it_decodes_byte_eof() {
let buf = Bytes::from(b"\x01".to_vec());
let mut decoder = Decoder::new(&buf);
let string: Bytes = decoder.decode_byte_eof(0);
let string: Bytes = decoder.decode_byte_eof(None);
assert_eq!(string[0], b'\x01');
assert_eq!(&string[..], b"\x01");
assert_eq!(string.len(), 1);
assert_eq!(decoder.index, 1);
}

View File

@ -45,9 +45,14 @@ mod test {
})
.await?;
#[rustfmt::skip]
let buf = __bytes_builder!(
// int<lenenc> tag code: None
0xFB_u8
// int<3> length
0u8, 0u8, 0u8,
// int<1> seq_no
0u8,
// int<lenenc> tag code: None
0xFB_u8
);
let message = ColumnPacket::deserialize(&mut DeContext::new(&mut conn.context, &buf))?;
@ -68,10 +73,16 @@ mod test {
})
.await?;
#[rustfmt::skip]
let buf = __bytes_builder!(
// int<lenenc> tag code: Some(3 bytes)
0xFD_u8, // value: 3 bytes
0x01_u8, 0x01_u8, 0x01_u8
// int<3> length
0u8, 0u8, 0u8,
// int<1> seq_no
0u8,
// int<lenenc> tag code: Some(3 bytes)
0xFD_u8,
// value: 3 bytes
0x01_u8, 0x01_u8, 0x01_u8
);
let message = ColumnPacket::deserialize(&mut DeContext::new(&mut conn.context, &buf))?;
@ -94,10 +105,14 @@ mod test {
#[rustfmt::skip]
let buf = __bytes_builder!(
// int<lenenc> tag code: Some(3 bytes)
0xFC_u8,
// value: 2 bytes
0x01_u8, 0x01_u8
// int<3> length
0u8, 0u8, 0u8,
// int<1> seq_no
0u8,
// int<lenenc> tag code: Some(3 bytes)
0xFC_u8,
// value: 2 bytes
0x01_u8, 0x01_u8
);
let message = ColumnPacket::deserialize(&mut DeContext::new(&mut conn.context, &buf))?;

View File

@ -25,9 +25,9 @@ impl Deserialize for EofPacket {
let packet_header = decoder.decode_int_1();
// if packet_header != 0xFE {
// panic!("Packet header is not 0xFE for ErrPacket");
// }
if packet_header != 0xFE {
panic!("Packet header is not 0xFE for ErrPacket");
}
let warning_count = decoder.decode_int_2();
let status = ServerStatusFlag::from_bits_truncate(decoder.decode_int_2());
@ -56,16 +56,16 @@ mod test {
#[rustfmt::skip]
let buf = __bytes_builder!(
// int<3> length
1u8, 0u8, 0u8,
// int<1> seq_no
1u8,
// int<1> 0xfe : EOF header
0xFE_u8,
// int<2> warning count
0u8, 0u8,
// int<2> server status
1u8, 1u8
// int<3> length
1u8, 0u8, 0u8,
// int<1> seq_no
1u8,
// int<1> 0xfe : EOF header
0xFE_u8,
// int<2> warning count
0u8, 0u8,
// int<2> server status
1u8, 1u8
);
let buf = Bytes::from_static(b"\x01\0\0\x01\xFE\x00\x00\x01\x00");

View File

@ -54,9 +54,9 @@ impl Deserialize for ErrPacket {
if decoder.buf[decoder.index] == b'#' {
sql_state_marker = Some(decoder.decode_string_fix(1));
sql_state = Some(decoder.decode_string_fix(5));
error_message = Some(decoder.decode_string_eof(length as usize));
error_message = Some(decoder.decode_string_eof(Some(length as usize)));
} else {
error_message = Some(decoder.decode_string_eof(length as usize));
error_message = Some(decoder.decode_string_eof(Some(length as usize)));
}
}

View File

@ -45,7 +45,7 @@ impl Deserialize for OkPacket {
let session_state_info = None;
let value = None;
let info = decoder.decode_byte_eof(index + length as usize);
let info = decoder.decode_byte_eof(Some(index + length as usize));
Ok(OkPacket {
length,
@ -82,30 +82,30 @@ mod test {
#[rustfmt::skip]
let buf = __bytes_builder!(
// int<3> length
0u8, 0u8, 0u8,
// // int<1> seq_no
1u8,
// 0x00 : OK_Packet header or (0xFE if CLIENT_DEPRECATE_EOF is set)
0u8,
// int<lenenc> affected rows
0xFB_u8,
// int<lenenc> last insert id
0xFB_u8,
// int<2> server status
1u8, 1u8,
// int<2> warning count
0u8, 0u8,
// if session_tracking_supported (see CLIENT_SESSION_TRACK) {
// string<lenenc> info
// if (status flags & SERVER_SESSION_STATE_CHANGED) {
// string<lenenc> session state info
// string<lenenc> value of variable
// }
// } else {
// string<EOF> info
b"info"
// }
// int<3> length
0u8, 0u8, 0u8,
// // int<1> seq_no
1u8,
// 0x00 : OK_Packet header or (0xFE if CLIENT_DEPRECATE_EOF is set)
0u8,
// int<lenenc> affected rows
0xFB_u8,
// int<lenenc> last insert id
0xFB_u8,
// int<2> server status
1u8, 1u8,
// int<2> warning count
0u8, 0u8,
// if session_tracking_supported (see CLIENT_SESSION_TRACK) {
// string<lenenc> info
// if (status flags & SERVER_SESSION_STATE_CHANGED) {
// string<lenenc> session state info
// string<lenenc> value of variable
// }
// } else {
// string<EOF> info
b"info"
// }
);
let message = OkPacket::deserialize(&mut DeContext::new(&mut conn.context, &buf))?;

View File

@ -98,7 +98,7 @@ mod test {
// TODO: Use byte string as input for test; this is a valid return from a mariadb.
#[rustfmt::skip]
let buf = __bytes_builder!(
let buf = __bytes_builder!(
// ------------------- //
// Column Count packet //
// ------------------- //