Skip to content

Commit

Permalink
Simplify serde tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
BratSinot committed Nov 27, 2021
1 parent 9edcb62 commit e4004c3
Showing 1 changed file with 6 additions and 38 deletions.
44 changes: 6 additions & 38 deletions src/serde.rs
Expand Up @@ -24,52 +24,35 @@ where
#[cfg(test)]
mod tests {
use crate::{ArcSwap, ArcSwapAny, ArcSwapOption, RefCnt};
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use serde_derive::{Deserialize, Serialize};
use serde_test::{assert_tokens, Token};
use std::sync::Arc;

#[derive(Debug)]
#[derive(Debug, Serialize, Deserialize)]
#[serde(transparent)]
struct ArcSwapAnyEq<T: RefCnt>(ArcSwapAny<T>);
impl<T: RefCnt + PartialEq> PartialEq for ArcSwapAnyEq<T> {
fn eq(&self, other: &Self) -> bool {
self.0.load().eq(&other.0.load())
}
}
impl<T: RefCnt + PartialEq> Eq for ArcSwapAnyEq<T> {}
impl<T: RefCnt + Serialize> Serialize for ArcSwapAnyEq<T> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
self.0.load().serialize(serializer)
}
}
impl<'de, T: RefCnt + Deserialize<'de>> Deserialize<'de> for ArcSwapAnyEq<T> {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let inner = T::deserialize(deserializer)?;
Ok(Self(ArcSwapAny::new(inner)))
}
}

#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
struct Foo {
field0: usize,
field0: u64,
field1: String,
}

#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
struct Bar {
field0: ArcSwapAnyEq<Arc<usize>>,
field0: ArcSwapAnyEq<Arc<u64>>,
field1: ArcSwapAnyEq<Option<Arc<String>>>,
}

#[test]
fn test_serialize_deserialize() {
let field0 = usize::MAX;
let field0 = u64::MAX;
let field1 = "FOO_-0123456789";

let data_orig = Foo {
Expand All @@ -85,11 +68,6 @@ mod tests {
len: 2,
},
Token::Str("field0"),
#[cfg(target_pointer_width = "16")]
Token::U16(u16::MAX),
#[cfg(target_pointer_width = "32")]
Token::U32(u32::MAX),
#[cfg(target_pointer_width = "64")]
Token::U64(u64::MAX),
Token::Str("field1"),
Token::String(field1),
Expand All @@ -109,11 +87,6 @@ mod tests {
len: 2,
},
Token::Str("field0"),
#[cfg(target_pointer_width = "16")]
Token::U16(u16::MAX),
#[cfg(target_pointer_width = "32")]
Token::U32(u32::MAX),
#[cfg(target_pointer_width = "64")]
Token::U64(u64::MAX),
Token::Str("field1"),
Token::Some,
Expand All @@ -125,7 +98,7 @@ mod tests {

#[test]
fn test_serialize_deserialize_option() {
let field0 = usize::MAX;
let field0 = u64::MAX;
let field1 = "FOO_-0123456789";

let data_orig = Foo {
Expand All @@ -142,11 +115,6 @@ mod tests {
len: 2,
},
Token::Str("field0"),
#[cfg(target_pointer_width = "16")]
Token::U16(u16::MAX),
#[cfg(target_pointer_width = "32")]
Token::U32(u32::MAX),
#[cfg(target_pointer_width = "64")]
Token::U64(u64::MAX),
Token::Str("field1"),
Token::String(field1),
Expand Down

0 comments on commit e4004c3

Please sign in to comment.