mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-20 16:11:10 +00:00
Tests for tuple default attribute
This commit is contained in:
@@ -93,6 +93,17 @@ where
|
|||||||
a5: E,
|
a5: E,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||||
|
struct DefaultTupleStruct<A, B, C>(
|
||||||
|
A,
|
||||||
|
#[serde(default)]
|
||||||
|
B,
|
||||||
|
#[serde(default = "MyDefault::my_default")]
|
||||||
|
C,
|
||||||
|
)
|
||||||
|
where
|
||||||
|
C: MyDefault;
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||||
struct CollectOther {
|
struct CollectOther {
|
||||||
a: u32,
|
a: u32,
|
||||||
@@ -186,8 +197,37 @@ fn test_default_struct() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_default_tuple() {
|
||||||
|
assert_de_tokens(
|
||||||
|
&DefaultTupleStruct(1, 2, 3),
|
||||||
|
&[
|
||||||
|
Token::TupleStruct {
|
||||||
|
name: "DefaultTupleStruct",
|
||||||
|
len: 3,
|
||||||
|
},
|
||||||
|
Token::I32(1),
|
||||||
|
Token::I32(2),
|
||||||
|
Token::I32(3),
|
||||||
|
Token::TupleStructEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_de_tokens(
|
||||||
|
&DefaultTupleStruct(1, 0, 123),
|
||||||
|
&[
|
||||||
|
Token::TupleStruct {
|
||||||
|
name: "DefaultTupleStruct",
|
||||||
|
len: 3,
|
||||||
|
},
|
||||||
|
Token::I32(1),
|
||||||
|
Token::TupleStructEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||||
enum DefaultEnum<A, B, C, D, E>
|
enum DefaultStructVariant<A, B, C, D, E>
|
||||||
where
|
where
|
||||||
C: MyDefault,
|
C: MyDefault,
|
||||||
E: MyDefault,
|
E: MyDefault,
|
||||||
@@ -205,10 +245,24 @@ where
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||||
|
enum DefaultTupleVariant<A, B, C>
|
||||||
|
where
|
||||||
|
C: MyDefault,
|
||||||
|
{
|
||||||
|
Tuple(
|
||||||
|
A,
|
||||||
|
#[serde(default)]
|
||||||
|
B,
|
||||||
|
#[serde(default = "MyDefault::my_default")]
|
||||||
|
C,
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_default_enum() {
|
fn test_default_struct_variant() {
|
||||||
assert_de_tokens(
|
assert_de_tokens(
|
||||||
&DefaultEnum::Struct {
|
&DefaultStructVariant::Struct {
|
||||||
a1: 1,
|
a1: 1,
|
||||||
a2: 2,
|
a2: 2,
|
||||||
a3: 3,
|
a3: 3,
|
||||||
@@ -217,7 +271,7 @@ fn test_default_enum() {
|
|||||||
},
|
},
|
||||||
&[
|
&[
|
||||||
Token::StructVariant {
|
Token::StructVariant {
|
||||||
name: "DefaultEnum",
|
name: "DefaultStructVariant",
|
||||||
variant: "Struct",
|
variant: "Struct",
|
||||||
len: 3,
|
len: 3,
|
||||||
},
|
},
|
||||||
@@ -236,7 +290,7 @@ fn test_default_enum() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
assert_de_tokens(
|
assert_de_tokens(
|
||||||
&DefaultEnum::Struct {
|
&DefaultStructVariant::Struct {
|
||||||
a1: 1,
|
a1: 1,
|
||||||
a2: 0,
|
a2: 0,
|
||||||
a3: 123,
|
a3: 123,
|
||||||
@@ -245,7 +299,7 @@ fn test_default_enum() {
|
|||||||
},
|
},
|
||||||
&[
|
&[
|
||||||
Token::StructVariant {
|
Token::StructVariant {
|
||||||
name: "DefaultEnum",
|
name: "DefaultStructVariant",
|
||||||
variant: "Struct",
|
variant: "Struct",
|
||||||
len: 3,
|
len: 3,
|
||||||
},
|
},
|
||||||
@@ -256,6 +310,37 @@ fn test_default_enum() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_default_tuple_variant() {
|
||||||
|
assert_de_tokens(
|
||||||
|
&DefaultTupleVariant::Tuple(1, 2, 3),
|
||||||
|
&[
|
||||||
|
Token::TupleVariant {
|
||||||
|
name: "DefaultTupleVariant",
|
||||||
|
variant: "Tuple",
|
||||||
|
len: 3,
|
||||||
|
},
|
||||||
|
Token::I32(1),
|
||||||
|
Token::I32(2),
|
||||||
|
Token::I32(3),
|
||||||
|
Token::TupleVariantEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_de_tokens(
|
||||||
|
&DefaultTupleVariant::Tuple(1, 0, 123),
|
||||||
|
&[
|
||||||
|
Token::TupleVariant {
|
||||||
|
name: "DefaultTupleVariant",
|
||||||
|
variant: "Tuple",
|
||||||
|
len: 3,
|
||||||
|
},
|
||||||
|
Token::I32(1),
|
||||||
|
Token::TupleVariantEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Does not implement std::default::Default.
|
// Does not implement std::default::Default.
|
||||||
#[derive(Debug, PartialEq, Deserialize)]
|
#[derive(Debug, PartialEq, Deserialize)]
|
||||||
struct NoStdDefault(i8);
|
struct NoStdDefault(i8);
|
||||||
|
|||||||
Reference in New Issue
Block a user