1 #![cfg(feature = "serde")]
4 extern crate serde_derive
;
7 extern crate serde_json
;
9 use semver
::{Identifier, Version, VersionReq}
;
11 #[derive(Serialize, Deserialize, PartialEq, Debug)]
14 identifier
: Identifier
,
17 #[derive(Serialize, Deserialize, PartialEq, Debug)]
24 fn serialize_identifier() {
26 name
: "serde".to_owned(),
27 identifier
: Identifier
::Numeric(100),
29 let j
= serde_json
::to_string(&id
).unwrap();
30 assert_eq
!(j
, r
#"{"name":"serde","identifier":100}"#);
33 name
: "serde".to_owned(),
34 identifier
: Identifier
::AlphaNumeric("b100".to_owned()),
36 let j
= serde_json
::to_string(&id
).unwrap();
37 assert_eq
!(j
, r
#"{"name":"serde","identifier":"b100"}"#);
41 fn deserialize_identifier() {
42 let j
= r
#"{"name":"serde","identifier":100}"#;
43 let id
= serde_json
::from_str
::<Identified
>(j
).unwrap();
44 let expected
= Identified
{
45 name
: "serde".to_owned(),
46 identifier
: Identifier
::Numeric(100),
48 assert_eq
!(id
, expected
);
50 let j
= r
#"{"name":"serde","identifier":"b100"}"#;
51 let id
= serde_json
::from_str
::<Identified
>(j
).unwrap();
52 let expected
= Identified
{
53 name
: "serde".to_owned(),
54 identifier
: Identifier
::AlphaNumeric("b100".to_owned()),
56 assert_eq
!(id
, expected
);
60 fn serialize_version() {
62 name
: "serde".to_owned(),
63 vers
: Version
::parse("1.0.0").unwrap(),
65 let j
= serde_json
::to_string(&v
).unwrap();
66 assert_eq
!(j
, r
#"{"name":"serde","vers":"1.0.0"}"#);
70 fn deserialize_version() {
71 let j
= r
#"{"name":"serde","vers":"1.0.0"}"#;
72 let v
= serde_json
::from_str
::<Versioned
>(j
).unwrap();
73 let expected
= Versioned
{
74 name
: "serde".to_owned(),
75 vers
: Version
::parse("1.0.0").unwrap(),
77 assert_eq
!(v
, expected
);
81 fn serialize_versionreq() {
82 let v
= VersionReq
::exact(&Version
::parse("1.0.0").unwrap());
84 assert_eq
!(serde_json
::to_string(&v
).unwrap(), r
#""= 1.0.0""#);
88 fn deserialize_versionreq() {
90 "1.0.0".parse
::<VersionReq
>().unwrap(),
91 serde_json
::from_str(r
#""1.0.0""#).unwrap()