Added some more test cases for into_iter.

This commit is contained in:
2018-01-05 20:57:22 +01:00
parent 1de9a0904d
commit 60ccc7cce1

View File

@@ -1,7 +1,7 @@
extern crate unreachable; extern crate unreachable;
use std::ops; use std::ops;
use std::iter::{Iterator, IntoIterator, FromIterator}; use std::iter::{FromIterator, IntoIterator, Iterator};
use std::default::Default; use std::default::Default;
use std::collections::HashMap; use std::collections::HashMap;
@@ -134,10 +134,14 @@ impl BitSet {
} }
pub fn iter(&self) -> Iter { pub fn iter(&self) -> Iter {
Iter { iter: self.blocks.iter(), block: 0, bits: 0, bit: BITS } Iter {
iter: self.blocks.iter(),
block: 0,
bits: 0,
bit: BITS,
}
} }
} }
pub struct Iter<'a> { pub struct Iter<'a> {
iter: std::collections::hash_map::Iter<'a, u64, u64>, iter: std::collections::hash_map::Iter<'a, u64, u64>,
@@ -227,7 +231,12 @@ impl IntoIterator for BitSet {
type IntoIter = IntoIter; type IntoIter = IntoIter;
fn into_iter(self) -> IntoIter { fn into_iter(self) -> IntoIter {
IntoIter { iter: self.blocks.into_iter(), block: 0, bits: 0, bit: BITS } IntoIter {
iter: self.blocks.into_iter(),
block: 0,
bits: 0,
bit: BITS,
}
} }
} }
@@ -396,12 +405,16 @@ mod tests {
#[test] #[test]
fn into_iter() { fn into_iter() {
let set = [1, 2, 3].iter().cloned().collect::<BitSet>(); let set = [1, 2, 3, 65, 66, 129, 130].iter().cloned().collect::<BitSet>();
let mut iter = set.into_iter(); let mut iter = set.into_iter();
assert_eq!(Some(1), iter.next()); assert_eq!(Some(1), iter.next());
assert_eq!(Some(2), iter.next()); assert_eq!(Some(2), iter.next());
assert_eq!(Some(3), iter.next()); assert_eq!(Some(3), iter.next());
assert_eq!(Some(65), iter.next());
assert_eq!(Some(66), iter.next());
assert_eq!(Some(129), iter.next());
assert_eq!(Some(130), iter.next());
assert_eq!(None, iter.next()); assert_eq!(None, iter.next());
assert_eq!(None, iter.next()); assert_eq!(None, iter.next());
} }