Skip to content

Commit 624879c

Browse files
authored
Merge pull request #2441 from dtolnay/test
Reimplement tests that touched serde_test internal API
2 parents 3e4a23c + bd9e9ab commit 624879c

File tree

3 files changed

+35
-41
lines changed

3 files changed

+35
-41
lines changed

serde_test/src/lib.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,3 @@ pub use assert::{
182182
pub use token::Token;
183183

184184
pub use configure::{Compact, Configure, Readable};
185-
186-
// Not public API.
187-
#[doc(hidden)]
188-
pub use de::Deserializer;

test_suite/tests/test_borrow.rs

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
clippy::used_underscore_binding
55
)]
66

7+
use serde::de::value::{BorrowedStrDeserializer, MapDeserializer};
8+
use serde::de::IntoDeserializer;
79
use serde::{Deserialize, Deserializer};
810
use serde_test::{assert_de_tokens, assert_de_tokens_error, Token};
911

@@ -130,20 +132,22 @@ fn test_cow() {
130132
borrowed: Cow<'b, str>,
131133
}
132134

133-
let tokens = &[
134-
Token::Struct {
135-
name: "Cows",
136-
len: 2,
137-
},
138-
Token::Str("copied"),
139-
Token::BorrowedStr("copied"),
140-
Token::Str("borrowed"),
141-
Token::BorrowedStr("borrowed"),
142-
Token::StructEnd,
143-
];
144-
145-
let mut de = serde_test::Deserializer::new(tokens);
146-
let cows = Cows::deserialize(&mut de).unwrap();
135+
struct BorrowedStr(&'static str);
136+
137+
impl<'de> IntoDeserializer<'de> for BorrowedStr {
138+
type Deserializer = BorrowedStrDeserializer<'de, serde::de::value::Error>;
139+
140+
fn into_deserializer(self) -> Self::Deserializer {
141+
BorrowedStrDeserializer::new(self.0)
142+
}
143+
}
144+
145+
let de = MapDeserializer::new(IntoIterator::into_iter([
146+
("copied", BorrowedStr("copied")),
147+
("borrowed", BorrowedStr("borrowed")),
148+
]));
149+
150+
let cows = Cows::deserialize(de).unwrap();
147151

148152
match cows.copied {
149153
Cow::Owned(ref s) if s == "copied" => {}

test_suite/tests/test_de.rs

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ use std::time::{Duration, UNIX_EPOCH};
3333
use std::sync::atomic::{AtomicI64, AtomicU64};
3434

3535
use fnv::FnvHasher;
36-
use serde::de::DeserializeOwned;
36+
use serde::de::{DeserializeOwned, IntoDeserializer};
3737
use serde::{Deserialize, Deserializer};
3838
use serde_test::{assert_de_tokens, Configure, Token};
3939

@@ -202,9 +202,8 @@ fn assert_de_tokens_ignore(ignorable_tokens: &[Token]) {
202202
.chain(vec![Token::MapEnd].into_iter())
203203
.collect();
204204

205-
let mut de = serde_test::Deserializer::new(&concated_tokens);
206-
let base = IgnoreBase::deserialize(&mut de).unwrap();
207-
assert_eq!(base, IgnoreBase { a: 1 });
205+
let expected = IgnoreBase { a: 1 };
206+
assert_de_tokens(&expected, &concated_tokens);
208207
}
209208

210209
//////////////////////////////////////////////////////////////////////////
@@ -2245,39 +2244,34 @@ fn test_cstr() {
22452244

22462245
#[test]
22472246
fn test_atomics() {
2248-
fn test<L, A, T>(load: L, val: T, token: Token)
2247+
fn test<L, A, T>(load: L, val: T)
22492248
where
22502249
L: Fn(&A, Ordering) -> T,
22512250
A: DeserializeOwned,
2252-
T: PartialEq + Debug,
2251+
T: PartialEq + Debug + Copy + for<'de> IntoDeserializer<'de>,
22532252
{
2254-
let tokens = &[token];
2255-
let mut de = serde_test::Deserializer::new(tokens);
2256-
match A::deserialize(&mut de) {
2253+
match A::deserialize(val.into_deserializer()) {
22572254
Ok(v) => {
22582255
let loaded = load(&v, Ordering::Relaxed);
22592256
assert_eq!(val, loaded);
22602257
}
22612258
Err(e) => panic!("tokens failed to deserialize: {}", e),
2262-
};
2263-
if de.remaining() > 0 {
2264-
panic!("{} remaining tokens", de.remaining());
22652259
}
22662260
}
22672261

2268-
test(AtomicBool::load, true, Token::Bool(true));
2269-
test(AtomicI8::load, -127, Token::I8(-127i8));
2270-
test(AtomicI16::load, -510, Token::I16(-510i16));
2271-
test(AtomicI32::load, -131072, Token::I32(-131072i32));
2272-
test(AtomicIsize::load, -131072isize, Token::I32(-131072));
2273-
test(AtomicU8::load, 127, Token::U8(127u8));
2274-
test(AtomicU16::load, 510u16, Token::U16(510u16));
2275-
test(AtomicU32::load, 131072u32, Token::U32(131072u32));
2276-
test(AtomicUsize::load, 131072usize, Token::U32(131072));
2262+
test(AtomicBool::load, true);
2263+
test(AtomicI8::load, -127i8);
2264+
test(AtomicI16::load, -510i16);
2265+
test(AtomicI32::load, -131072i32);
2266+
test(AtomicIsize::load, -131072isize);
2267+
test(AtomicU8::load, 127u8);
2268+
test(AtomicU16::load, 510u16);
2269+
test(AtomicU32::load, 131072u32);
2270+
test(AtomicUsize::load, 131072usize);
22772271

22782272
#[cfg(target_arch = "x86_64")]
22792273
{
2280-
test(AtomicI64::load, -8589934592, Token::I64(-8589934592));
2281-
test(AtomicU64::load, 8589934592u64, Token::U64(8589934592));
2274+
test(AtomicI64::load, -8589934592i64);
2275+
test(AtomicU64::load, 8589934592u64);
22822276
}
22832277
}

0 commit comments

Comments
 (0)