diff --git a/Cargo.toml b/Cargo.toml index 9d6b37f..ba7b59c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,7 @@ authors = ["logaritmisk "] [dependencies] unreachable = "1.0" serde = "1.0" +serde_test = "1.0" [profile.release] lto = true diff --git a/src/lib.rs b/src/lib.rs index 3e9fd58..0b6cb8e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,5 @@ extern crate serde; +extern crate serde_test; extern crate unreachable; use std::fmt; @@ -9,6 +10,7 @@ use std::collections::HashMap; use serde::ser::{self, Serialize}; use serde::de::{self, Deserialize, SeqAccess, Visitor}; +use serde_test::{assert_tokens, Token}; mod hasher; @@ -26,7 +28,7 @@ fn block_bit(x: u64, d: u64) -> (u64, u64) { (x / d, x % d) } -#[derive(Debug)] +#[derive(PartialEq, Debug)] pub struct BitSet { blocks: Storage, nbits: usize, @@ -507,4 +509,23 @@ mod tests { assert_eq!(None, iter.next()); assert_eq!(None, iter.next()); } + + #[test] + fn test_ser_de() { + let mut set = BitSet::new(); + set.insert(20); + set.insert(10); + set.insert(30); + + assert_tokens( + &set, + &[ + Token::Seq { len: None }, + Token::U64(10), + Token::U64(20), + Token::U64(30), + Token::SeqEnd, + ], + ); + } }