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

View File

@ -45,7 +45,12 @@ mod test {
}) })
.await?; .await?;
#[rustfmt::skip]
let buf = __bytes_builder!( let buf = __bytes_builder!(
// int<3> length
0u8, 0u8, 0u8,
// int<1> seq_no
0u8,
// int<lenenc> tag code: None // int<lenenc> tag code: None
0xFB_u8 0xFB_u8
); );
@ -68,9 +73,15 @@ mod test {
}) })
.await?; .await?;
#[rustfmt::skip]
let buf = __bytes_builder!( let buf = __bytes_builder!(
// int<3> length
0u8, 0u8, 0u8,
// int<1> seq_no
0u8,
// int<lenenc> tag code: Some(3 bytes) // int<lenenc> tag code: Some(3 bytes)
0xFD_u8, // value: 3 bytes 0xFD_u8,
// value: 3 bytes
0x01_u8, 0x01_u8, 0x01_u8 0x01_u8, 0x01_u8, 0x01_u8
); );
@ -94,6 +105,10 @@ mod test {
#[rustfmt::skip] #[rustfmt::skip]
let buf = __bytes_builder!( let buf = __bytes_builder!(
// int<3> length
0u8, 0u8, 0u8,
// int<1> seq_no
0u8,
// int<lenenc> tag code: Some(3 bytes) // int<lenenc> tag code: Some(3 bytes)
0xFC_u8, 0xFC_u8,
// value: 2 bytes // value: 2 bytes

View File

@ -25,9 +25,9 @@ impl Deserialize for EofPacket {
let packet_header = decoder.decode_int_1(); let packet_header = decoder.decode_int_1();
// if packet_header != 0xFE { if packet_header != 0xFE {
// panic!("Packet header is not 0xFE for ErrPacket"); panic!("Packet header is not 0xFE for ErrPacket");
// } }
let warning_count = decoder.decode_int_2(); let warning_count = decoder.decode_int_2();
let status = ServerStatusFlag::from_bits_truncate(decoder.decode_int_2()); let status = ServerStatusFlag::from_bits_truncate(decoder.decode_int_2());

View File

@ -54,9 +54,9 @@ impl Deserialize for ErrPacket {
if decoder.buf[decoder.index] == b'#' { if decoder.buf[decoder.index] == b'#' {
sql_state_marker = Some(decoder.decode_string_fix(1)); sql_state_marker = Some(decoder.decode_string_fix(1));
sql_state = Some(decoder.decode_string_fix(5)); 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 { } 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 session_state_info = None;
let value = 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 { Ok(OkPacket {
length, length,