]> git.proxmox.com Git - cargo.git/blob - vendor/hex/tests/serde.rs
New upstream version 0.52.0
[cargo.git] / vendor / hex / tests / serde.rs
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]
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]
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]
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]
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 }