]> git.proxmox.com Git - rustc.git/blame - vendor/semver/tests/serde.rs
New upstream version 1.52.1+dfsg1
[rustc.git] / vendor / semver / tests / serde.rs
CommitLineData
f20569fa
XL
1#![cfg(feature = "serde")]\r
2\r
3#[macro_use]\r
4extern crate serde_derive;\r
5\r
6extern crate semver;\r
7extern crate serde_json;\r
8\r
9use semver::{Identifier, Version, VersionReq};\r
10\r
11#[derive(Serialize, Deserialize, PartialEq, Debug)]\r
12struct Identified {\r
13 name: String,\r
14 identifier: Identifier,\r
15}\r
16\r
17#[derive(Serialize, Deserialize, PartialEq, Debug)]\r
18struct Versioned {\r
19 name: String,\r
20 vers: Version,\r
21}\r
22\r
23#[test]\r
24fn serialize_identifier() {\r
25 let id = Identified {\r
26 name: "serde".to_owned(),\r
27 identifier: Identifier::Numeric(100),\r
28 };\r
29 let j = serde_json::to_string(&id).unwrap();\r
30 assert_eq!(j, r#"{"name":"serde","identifier":100}"#);\r
31\r
32 let id = Identified {\r
33 name: "serde".to_owned(),\r
34 identifier: Identifier::AlphaNumeric("b100".to_owned()),\r
35 };\r
36 let j = serde_json::to_string(&id).unwrap();\r
37 assert_eq!(j, r#"{"name":"serde","identifier":"b100"}"#);\r
38}\r
39\r
40#[test]\r
41fn deserialize_identifier() {\r
42 let j = r#"{"name":"serde","identifier":100}"#;\r
43 let id = serde_json::from_str::<Identified>(j).unwrap();\r
44 let expected = Identified {\r
45 name: "serde".to_owned(),\r
46 identifier: Identifier::Numeric(100),\r
47 };\r
48 assert_eq!(id, expected);\r
49\r
50 let j = r#"{"name":"serde","identifier":"b100"}"#;\r
51 let id = serde_json::from_str::<Identified>(j).unwrap();\r
52 let expected = Identified {\r
53 name: "serde".to_owned(),\r
54 identifier: Identifier::AlphaNumeric("b100".to_owned()),\r
55 };\r
56 assert_eq!(id, expected);\r
57}\r
58\r
59#[test]\r
60fn serialize_version() {\r
61 let v = Versioned {\r
62 name: "serde".to_owned(),\r
63 vers: Version::parse("1.0.0").unwrap(),\r
64 };\r
65 let j = serde_json::to_string(&v).unwrap();\r
66 assert_eq!(j, r#"{"name":"serde","vers":"1.0.0"}"#);\r
67}\r
68\r
69#[test]\r
70fn deserialize_version() {\r
71 let j = r#"{"name":"serde","vers":"1.0.0"}"#;\r
72 let v = serde_json::from_str::<Versioned>(j).unwrap();\r
73 let expected = Versioned {\r
74 name: "serde".to_owned(),\r
75 vers: Version::parse("1.0.0").unwrap(),\r
76 };\r
77 assert_eq!(v, expected);\r
78}\r
79\r
80#[test]\r
81fn serialize_versionreq() {\r
82 let v = VersionReq::exact(&Version::parse("1.0.0").unwrap());\r
83\r
84 assert_eq!(serde_json::to_string(&v).unwrap(), r#""= 1.0.0""#);\r
85}\r
86\r
87#[test]\r
88fn deserialize_versionreq() {\r
89 assert_eq!(\r
90 "1.0.0".parse::<VersionReq>().unwrap(),\r
91 serde_json::from_str(r#""1.0.0""#).unwrap()\r
92 );\r
93}\r