mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-13 06:41:03 +00:00
Test Weak deserialize impls
This commit is contained in:
@@ -17,15 +17,15 @@ use std::ffi::{CString, OsString};
|
|||||||
use std::net;
|
use std::net;
|
||||||
use std::num::Wrapping;
|
use std::num::Wrapping;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::rc::Rc;
|
use std::rc::{Rc, Weak as RcWeak};
|
||||||
use std::sync::Arc;
|
use std::sync::{Arc, Weak as ArcWeak};
|
||||||
use std::time::{Duration, UNIX_EPOCH};
|
use std::time::{Duration, UNIX_EPOCH};
|
||||||
|
|
||||||
#[cfg(feature = "unstable")]
|
#[cfg(feature = "unstable")]
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
|
|
||||||
extern crate serde;
|
extern crate serde;
|
||||||
use serde::Deserialize;
|
use serde::{Deserialize, Deserializer};
|
||||||
|
|
||||||
extern crate fnv;
|
extern crate fnv;
|
||||||
use self::fnv::FnvHasher;
|
use self::fnv::FnvHasher;
|
||||||
@@ -182,6 +182,27 @@ macro_rules! declare_error_tests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct SkipPartialEq<T>(T);
|
||||||
|
|
||||||
|
impl<'de, T> Deserialize<'de> for SkipPartialEq<T>
|
||||||
|
where
|
||||||
|
T: Deserialize<'de>,
|
||||||
|
{
|
||||||
|
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||||
|
where
|
||||||
|
D: Deserializer<'de>,
|
||||||
|
{
|
||||||
|
T::deserialize(deserializer).map(SkipPartialEq)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T> PartialEq for SkipPartialEq<T> {
|
||||||
|
fn eq(&self, _other: &Self) -> bool {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn assert_de_tokens_ignore(ignorable_tokens: &[Token]) {
|
fn assert_de_tokens_ignore(ignorable_tokens: &[Token]) {
|
||||||
#[derive(PartialEq, Debug, Deserialize)]
|
#[derive(PartialEq, Debug, Deserialize)]
|
||||||
struct IgnoreBase {
|
struct IgnoreBase {
|
||||||
@@ -788,11 +809,33 @@ declare_tests! {
|
|||||||
Token::Bool(true),
|
Token::Bool(true),
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
test_rc_weak_some {
|
||||||
|
SkipPartialEq(RcWeak::<bool>::new()) => &[
|
||||||
|
Token::Some,
|
||||||
|
Token::Bool(true),
|
||||||
|
],
|
||||||
|
}
|
||||||
|
test_rc_weak_none {
|
||||||
|
SkipPartialEq(RcWeak::<bool>::new()) => &[
|
||||||
|
Token::None,
|
||||||
|
],
|
||||||
|
}
|
||||||
test_arc {
|
test_arc {
|
||||||
Arc::new(true) => &[
|
Arc::new(true) => &[
|
||||||
Token::Bool(true),
|
Token::Bool(true),
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
test_arc_weak_some {
|
||||||
|
SkipPartialEq(ArcWeak::<bool>::new()) => &[
|
||||||
|
Token::Some,
|
||||||
|
Token::Bool(true),
|
||||||
|
],
|
||||||
|
}
|
||||||
|
test_arc_weak_none {
|
||||||
|
SkipPartialEq(ArcWeak::<bool>::new()) => &[
|
||||||
|
Token::None,
|
||||||
|
],
|
||||||
|
}
|
||||||
test_wrapping {
|
test_wrapping {
|
||||||
Wrapping(1usize) => &[
|
Wrapping(1usize) => &[
|
||||||
Token::U32(1),
|
Token::U32(1),
|
||||||
|
|||||||
Reference in New Issue
Block a user