1 #![cfg(all(feature = "serde", feature = "alloc"))]
2 #![allow(clippy::blacklisted_name)]
3 
4 use serde::{Deserialize, Serialize};
5 
6 #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
7 struct Foo {
8     #[serde(with = "hex")]
9     bar: Vec<u8>,
10 }
11 
12 #[test]
serialize()13 fn serialize() {
14     let foo = Foo {
15         bar: vec![1, 10, 100],
16     };
17 
18     let ser = serde_json::to_string(&foo).expect("serialization failed");
19     assert_eq!(ser, r#"{"bar":"010a64"}"#);
20 }
21 
22 #[test]
deserialize()23 fn deserialize() {
24     let foo = Foo {
25         bar: vec![1, 10, 100],
26     };
27 
28     let de: Foo = serde_json::from_str(r#"{"bar":"010a64"}"#).expect("deserialization failed");
29     assert_eq!(de, foo);
30 }
31 
32 #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
33 struct Bar {
34     #[serde(
35         serialize_with = "hex::serialize_upper",
36         deserialize_with = "hex::deserialize"
37     )]
38     foo: Vec<u8>,
39 }
40 
41 #[test]
serialize_upper()42 fn serialize_upper() {
43     let bar = Bar {
44         foo: vec![1, 10, 100],
45     };
46 
47     let ser = serde_json::to_string(&bar).expect("serialization failed");
48     assert_eq!(ser, r#"{"foo":"010A64"}"#);
49 }
50 
51 #[test]
deserialize_upper()52 fn deserialize_upper() {
53     let bar = Bar {
54         foo: vec![1, 10, 100],
55     };
56 
57     let de: Bar = serde_json::from_str(r#"{"foo":"010A64"}"#).expect("deserialization failed");
58     assert_eq!(de, bar);
59 }
60