]> git.proxmox.com Git - rustc.git/blobdiff - vendor/semver/tests/serde.rs
New upstream version 1.52.1+dfsg1
[rustc.git] / vendor / semver / tests / serde.rs
diff --git a/vendor/semver/tests/serde.rs b/vendor/semver/tests/serde.rs
new file mode 100644 (file)
index 0000000..31bd10d
--- /dev/null
@@ -0,0 +1,93 @@
+#![cfg(feature = "serde")]\r
+\r
+#[macro_use]\r
+extern crate serde_derive;\r
+\r
+extern crate semver;\r
+extern crate serde_json;\r
+\r
+use semver::{Identifier, Version, VersionReq};\r
+\r
+#[derive(Serialize, Deserialize, PartialEq, Debug)]\r
+struct Identified {\r
+    name: String,\r
+    identifier: Identifier,\r
+}\r
+\r
+#[derive(Serialize, Deserialize, PartialEq, Debug)]\r
+struct Versioned {\r
+    name: String,\r
+    vers: Version,\r
+}\r
+\r
+#[test]\r
+fn serialize_identifier() {\r
+    let id = Identified {\r
+        name: "serde".to_owned(),\r
+        identifier: Identifier::Numeric(100),\r
+    };\r
+    let j = serde_json::to_string(&id).unwrap();\r
+    assert_eq!(j, r#"{"name":"serde","identifier":100}"#);\r
+\r
+    let id = Identified {\r
+        name: "serde".to_owned(),\r
+        identifier: Identifier::AlphaNumeric("b100".to_owned()),\r
+    };\r
+    let j = serde_json::to_string(&id).unwrap();\r
+    assert_eq!(j, r#"{"name":"serde","identifier":"b100"}"#);\r
+}\r
+\r
+#[test]\r
+fn deserialize_identifier() {\r
+    let j = r#"{"name":"serde","identifier":100}"#;\r
+    let id = serde_json::from_str::<Identified>(j).unwrap();\r
+    let expected = Identified {\r
+        name: "serde".to_owned(),\r
+        identifier: Identifier::Numeric(100),\r
+    };\r
+    assert_eq!(id, expected);\r
+\r
+    let j = r#"{"name":"serde","identifier":"b100"}"#;\r
+    let id = serde_json::from_str::<Identified>(j).unwrap();\r
+    let expected = Identified {\r
+        name: "serde".to_owned(),\r
+        identifier: Identifier::AlphaNumeric("b100".to_owned()),\r
+    };\r
+    assert_eq!(id, expected);\r
+}\r
+\r
+#[test]\r
+fn serialize_version() {\r
+    let v = Versioned {\r
+        name: "serde".to_owned(),\r
+        vers: Version::parse("1.0.0").unwrap(),\r
+    };\r
+    let j = serde_json::to_string(&v).unwrap();\r
+    assert_eq!(j, r#"{"name":"serde","vers":"1.0.0"}"#);\r
+}\r
+\r
+#[test]\r
+fn deserialize_version() {\r
+    let j = r#"{"name":"serde","vers":"1.0.0"}"#;\r
+    let v = serde_json::from_str::<Versioned>(j).unwrap();\r
+    let expected = Versioned {\r
+        name: "serde".to_owned(),\r
+        vers: Version::parse("1.0.0").unwrap(),\r
+    };\r
+    assert_eq!(v, expected);\r
+}\r
+\r
+#[test]\r
+fn serialize_versionreq() {\r
+    let v = VersionReq::exact(&Version::parse("1.0.0").unwrap());\r
+\r
+    assert_eq!(serde_json::to_string(&v).unwrap(), r#""= 1.0.0""#);\r
+}\r
+\r
+#[test]\r
+fn deserialize_versionreq() {\r
+    assert_eq!(\r
+        "1.0.0".parse::<VersionReq>().unwrap(),\r
+        serde_json::from_str(r#""1.0.0""#).unwrap()\r
+    );\r
+}\r