mirror of
https://github.com/serde-rs/json.git
synced 2026-03-23 10:03:55 +00:00
error: called `assert!` with `Result::is_err`
--> tests/regression/issue795.rs:53:5
|
53 | assert!(serde_json::from_str::<Enum>(s).is_err());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `serde_json::from_str::<Enum>(s).unwrap_err()`
|
= note: `-D clippy::assertions-on-result-states` implied by `-D clippy::all`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_result_states
error: called `assert!` with `Result::is_err`
--> tests/regression/issue795.rs:56:5
|
56 | assert!(serde_json::from_value::<Enum>(j).is_err());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `serde_json::from_value::<Enum>(j).unwrap_err()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_result_states
error: called `assert!` with `Result::is_err`
--> tests/stream.rs:179:9
|
179 | assert!(stream.next().unwrap().is_err());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `stream.next().unwrap().unwrap_err()`
|
= note: `-D clippy::assertions-on-result-states` implied by `-D clippy::all`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_result_states
error: called `assert!` with `Result::is_err`
--> tests/test.rs:940:5
|
940 | assert!(v.is_err());
| ^^^^^^^^^^^^^^^^^^^ help: replace with: `v.unwrap_err()`
|
= note: `-D clippy::assertions-on-result-states` implied by `-D clippy::all`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_result_states
error: called `assert!` with `Result::is_err`
--> tests/test.rs:1735:5
|
1735 | assert!(res.is_err());
| ^^^^^^^^^^^^^^^^^^^^^ help: replace with: `res.unwrap_err()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_result_states
error: called `assert!` with `Result::is_err`
--> tests/test.rs:1738:5
|
1738 | assert!(res.is_err());
| ^^^^^^^^^^^^^^^^^^^^^ help: replace with: `res.unwrap_err()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_result_states
error: called `assert!` with `Result::is_err`
--> tests/test.rs:1741:5
|
1741 | assert!(res.is_err());
| ^^^^^^^^^^^^^^^^^^^^^ help: replace with: `res.unwrap_err()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_result_states
error: called `assert!` with `Result::is_err`
--> tests/test.rs:1930:5
|
1930 | assert!(serde_json::to_value(&map).is_err());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `serde_json::to_value(&map).unwrap_err()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_result_states
error: called `assert!` with `Result::is_err`
--> tests/test.rs:2005:5
|
2005 | assert!(from_str::<E>(r#" "V"0 "#).is_err());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `from_str::<E>(r#" "V"0 "#).unwrap_err()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_result_states
184 lines
5.0 KiB
Rust
184 lines
5.0 KiB
Rust
#![cfg(not(feature = "preserve_order"))]
|
|
#![allow(clippy::assertions_on_result_states)]
|
|
|
|
use serde_json::{json, Deserializer, Value};
|
|
|
|
// Rustfmt issue https://github.com/rust-lang-nursery/rustfmt/issues/2740
|
|
#[rustfmt::skip]
|
|
macro_rules! test_stream {
|
|
($data:expr, $ty:ty, |$stream:ident| $test:block) => {
|
|
{
|
|
let de = Deserializer::from_str($data);
|
|
let mut $stream = de.into_iter::<$ty>();
|
|
assert_eq!($stream.byte_offset(), 0);
|
|
$test
|
|
}
|
|
{
|
|
let de = Deserializer::from_slice($data.as_bytes());
|
|
let mut $stream = de.into_iter::<$ty>();
|
|
assert_eq!($stream.byte_offset(), 0);
|
|
$test
|
|
}
|
|
{
|
|
let mut bytes = $data.as_bytes();
|
|
let de = Deserializer::from_reader(&mut bytes);
|
|
let mut $stream = de.into_iter::<$ty>();
|
|
assert_eq!($stream.byte_offset(), 0);
|
|
$test
|
|
}
|
|
};
|
|
}
|
|
|
|
#[test]
|
|
fn test_json_stream_newlines() {
|
|
let data = "{\"x\":39} {\"x\":40}{\"x\":41}\n{\"x\":42}";
|
|
|
|
test_stream!(data, Value, |stream| {
|
|
assert_eq!(stream.next().unwrap().unwrap()["x"], 39);
|
|
assert_eq!(stream.byte_offset(), 8);
|
|
|
|
assert_eq!(stream.next().unwrap().unwrap()["x"], 40);
|
|
assert_eq!(stream.byte_offset(), 17);
|
|
|
|
assert_eq!(stream.next().unwrap().unwrap()["x"], 41);
|
|
assert_eq!(stream.byte_offset(), 25);
|
|
|
|
assert_eq!(stream.next().unwrap().unwrap()["x"], 42);
|
|
assert_eq!(stream.byte_offset(), 34);
|
|
|
|
assert!(stream.next().is_none());
|
|
assert_eq!(stream.byte_offset(), 34);
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn test_json_stream_trailing_whitespaces() {
|
|
let data = "{\"x\":42} \t\n";
|
|
|
|
test_stream!(data, Value, |stream| {
|
|
assert_eq!(stream.next().unwrap().unwrap()["x"], 42);
|
|
assert_eq!(stream.byte_offset(), 8);
|
|
|
|
assert!(stream.next().is_none());
|
|
assert_eq!(stream.byte_offset(), 11);
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn test_json_stream_truncated() {
|
|
let data = "{\"x\":40}\n{\"x\":";
|
|
|
|
test_stream!(data, Value, |stream| {
|
|
assert_eq!(stream.next().unwrap().unwrap()["x"], 40);
|
|
assert_eq!(stream.byte_offset(), 8);
|
|
|
|
assert!(stream.next().unwrap().unwrap_err().is_eof());
|
|
assert_eq!(stream.byte_offset(), 9);
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn test_json_stream_truncated_decimal() {
|
|
let data = "{\"x\":4.";
|
|
|
|
test_stream!(data, Value, |stream| {
|
|
assert!(stream.next().unwrap().unwrap_err().is_eof());
|
|
assert_eq!(stream.byte_offset(), 0);
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn test_json_stream_truncated_negative() {
|
|
let data = "{\"x\":-";
|
|
|
|
test_stream!(data, Value, |stream| {
|
|
assert!(stream.next().unwrap().unwrap_err().is_eof());
|
|
assert_eq!(stream.byte_offset(), 0);
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn test_json_stream_truncated_exponent() {
|
|
let data = "{\"x\":4e";
|
|
|
|
test_stream!(data, Value, |stream| {
|
|
assert!(stream.next().unwrap().unwrap_err().is_eof());
|
|
assert_eq!(stream.byte_offset(), 0);
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn test_json_stream_empty() {
|
|
let data = "";
|
|
|
|
test_stream!(data, Value, |stream| {
|
|
assert!(stream.next().is_none());
|
|
assert_eq!(stream.byte_offset(), 0);
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn test_json_stream_primitive() {
|
|
let data = "{} true{}1[]\nfalse\"hey\"2 ";
|
|
|
|
test_stream!(data, Value, |stream| {
|
|
assert_eq!(stream.next().unwrap().unwrap(), json!({}));
|
|
assert_eq!(stream.byte_offset(), 2);
|
|
|
|
assert_eq!(stream.next().unwrap().unwrap(), true);
|
|
assert_eq!(stream.byte_offset(), 7);
|
|
|
|
assert_eq!(stream.next().unwrap().unwrap(), json!({}));
|
|
assert_eq!(stream.byte_offset(), 9);
|
|
|
|
assert_eq!(stream.next().unwrap().unwrap(), 1);
|
|
assert_eq!(stream.byte_offset(), 10);
|
|
|
|
assert_eq!(stream.next().unwrap().unwrap(), json!([]));
|
|
assert_eq!(stream.byte_offset(), 12);
|
|
|
|
assert_eq!(stream.next().unwrap().unwrap(), false);
|
|
assert_eq!(stream.byte_offset(), 18);
|
|
|
|
assert_eq!(stream.next().unwrap().unwrap(), "hey");
|
|
assert_eq!(stream.byte_offset(), 23);
|
|
|
|
assert_eq!(stream.next().unwrap().unwrap(), 2);
|
|
assert_eq!(stream.byte_offset(), 24);
|
|
|
|
assert!(stream.next().is_none());
|
|
assert_eq!(stream.byte_offset(), 25);
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn test_json_stream_invalid_literal() {
|
|
let data = "truefalse";
|
|
|
|
test_stream!(data, Value, |stream| {
|
|
let second = stream.next().unwrap().unwrap_err();
|
|
assert_eq!(second.to_string(), "trailing characters at line 1 column 5");
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn test_json_stream_invalid_number() {
|
|
let data = "1true";
|
|
|
|
test_stream!(data, Value, |stream| {
|
|
let second = stream.next().unwrap().unwrap_err();
|
|
assert_eq!(second.to_string(), "trailing characters at line 1 column 2");
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn test_error() {
|
|
let data = "true wrong false";
|
|
|
|
test_stream!(data, Value, |stream| {
|
|
assert_eq!(stream.next().unwrap().unwrap(), true);
|
|
assert!(stream.next().unwrap().is_err());
|
|
assert!(stream.next().is_none());
|
|
});
|
|
}
|