Fix ret of parse error instead of `NotEnough`

If we couldn't fetch the tsymbol, it means that the stream hasn't
buffered enough data.

Also tests were added to account for the same
next
Sayan Nandan 3 years ago
parent 8bdf5f32de
commit 35755f8033

@ -333,7 +333,7 @@ impl<'a> Parser<'a> {
}; };
array.push(ret); array.push(ret);
} else { } else {
return Err(ParseError::DataTypeParseError); return Err(ParseError::NotEnough);
} }
} }
Ok(array) Ok(array)
@ -708,3 +708,55 @@ fn test_parse_flat_array() {
]) ])
); );
} }
#[test]
fn test_flat_array_incomplete() {
let bytes = "*1\n_1\n".as_bytes();
let res = Parser::new(&bytes).parse().unwrap_err();
assert_eq!(res, ParseError::NotEnough);
let bytes = "*1\n_1".as_bytes();
let res = Parser::new(&bytes).parse().unwrap_err();
assert_eq!(res, ParseError::NotEnough);
let bytes = "*1\n_".as_bytes();
let res = Parser::new(&bytes).parse().unwrap_err();
assert_eq!(res, ParseError::NotEnough);
}
#[test]
fn test_array_incomplete() {
let bytes = "*1\n&1\n".as_bytes();
let res = Parser::new(&bytes).parse().unwrap_err();
assert_eq!(res, ParseError::NotEnough);
let bytes = "*1\n&1".as_bytes();
let res = Parser::new(&bytes).parse().unwrap_err();
assert_eq!(res, ParseError::NotEnough);
let bytes = "*1\n&".as_bytes();
let res = Parser::new(&bytes).parse().unwrap_err();
assert_eq!(res, ParseError::NotEnough);
}
#[test]
fn test_string_incomplete() {
let bytes = "*1\n+1\n".as_bytes();
let res = Parser::new(&bytes).parse().unwrap_err();
assert_eq!(res, ParseError::NotEnough);
let bytes = "*1\n+1".as_bytes();
let res = Parser::new(&bytes).parse().unwrap_err();
assert_eq!(res, ParseError::NotEnough);
let bytes = "*1\n+".as_bytes();
let res = Parser::new(&bytes).parse().unwrap_err();
assert_eq!(res, ParseError::NotEnough);
}
#[test]
fn test_u64_incomplete() {
let bytes = "*1\n:1\n".as_bytes();
let res = Parser::new(&bytes).parse().unwrap_err();
assert_eq!(res, ParseError::NotEnough);
let bytes = "*1\n:1".as_bytes();
let res = Parser::new(&bytes).parse().unwrap_err();
assert_eq!(res, ParseError::NotEnough);
let bytes = "*1\n:".as_bytes();
let res = Parser::new(&bytes).parse().unwrap_err();
assert_eq!(res, ParseError::NotEnough);
}

Loading…
Cancel
Save