]> git.lizzy.rs Git - enumset.git/commitdiff
Add tests for serde feature.
authorLymia Aluysia <lymia@lymiahugs.com>
Fri, 14 Dec 2018 14:03:16 +0000 (08:03 -0600)
committerLymia Aluysia <lymia@lymiahugs.com>
Fri, 14 Dec 2018 14:03:16 +0000 (08:03 -0600)
enumset/Cargo.toml
enumset/src/lib.rs

index bd5ae3265f8bf1f24069cf48da77ccf39f474e70..3622ca17a42ccc084b0fc4003c6f92e3f79ec8ce 100644 (file)
@@ -20,3 +20,6 @@ nightly = ["enumset_derive/nightly"]
 enumset_derive = { version = "0.2.0", path = "../enumset_derive" }
 num-traits = { version = "0.2", default-features = false }
 serde = { version = "1.0", default-features = false, optional = true }
+
+[dev-dependencies]
+bincode = { version = "1.0", features = ["i128"] }
\ No newline at end of file
index 04b76f75bab871d5b13e61c2fa7b6771cd4835b0..165b3cea7e6ad4b9e55e7fa7acbfbeda19ff8812 100644 (file)
@@ -428,21 +428,15 @@ impl <T : EnumSetType + Debug> Debug for EnumSet<T> {
 }
 
 #[cfg(feature = "serde")]
-impl <T : EnumSetType > serde::Serialize for EnumSet<T> {
-    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
-    where
-        S: serde::Serializer,
-    {
+impl <T : EnumSetType> serde::Serialize for EnumSet<T> {
+    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
         serializer.serialize_u128(self.to_bits())
     }
 }
 
 #[cfg(feature = "serde")]
-impl <'de, T : EnumSetType > serde::Deserialize<'de> for EnumSet<T> {
-    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
-    where
-        D: serde::Deserializer<'de>,
-    {
+impl <'de, T : EnumSetType> serde::Deserialize<'de> for EnumSet<T> {
+    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
         u128::deserialize(deserializer).map(EnumSet::from_bits)
     }
 }
@@ -547,6 +541,9 @@ macro_rules! enum_set {
 mod test {
     use super::*;
 
+    #[cfg(feature = "serde")]
+    extern crate bincode;
+
     mod enums {
         #[derive(::EnumSetType, Debug)]
         pub enum SmallEnum {
@@ -731,6 +728,15 @@ mod test {
                         _ => panic!("match fell through?"),
                     }
                 }
+
+                #[test]
+                #[cfg(feature = "serde")]
+                fn serialize_deserialize_test() {
+                    let value = $e::A | $e::C | $e::D | $e::F | $e::E | $e::G;
+                    let serialized = bincode::serialize(&value).unwrap();
+                    let deserialized = bincode::deserialize::<EnumSet<$e>>(&serialized).unwrap();
+                    assert_eq!(value, deserialized);
+                }
             }
         }
     }