use crate::collection::NitriteId;
#[derive(Debug)]
pub struct WriteResult {
nitrite_ids: Vec<NitriteId>,
}
impl WriteResult {
pub fn new(nitrite_ids: Vec<NitriteId>) -> Self {
Self { nitrite_ids }
}
pub fn affected_nitrite_ids(&self) -> &Vec<NitriteId> {
&self.nitrite_ids
}
}
impl Iterator for WriteResult {
type Item = NitriteId;
fn next(&mut self) -> Option<Self::Item> {
self.nitrite_ids.pop()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_write_result_new() {
let nitrite_ids = vec![NitriteId::new(), NitriteId::new()];
let write_result = WriteResult::new(nitrite_ids.clone());
assert_eq!(write_result.affected_nitrite_ids(), &nitrite_ids);
}
#[test]
fn test_write_result_get_nitrite_ids() {
let nitrite_ids = vec![NitriteId::new(), NitriteId::new()];
let write_result = WriteResult::new(nitrite_ids.clone());
assert_eq!(write_result.affected_nitrite_ids(), &nitrite_ids);
}
#[test]
fn test_write_result_iterator() {
let nitrite_id1 = NitriteId::new();
let nitrite_id2 = NitriteId::new();
let mut write_result = WriteResult::new(vec![nitrite_id1, nitrite_id2]);
assert_eq!(write_result.next(), Some(nitrite_id2));
assert_eq!(write_result.next(), Some(nitrite_id1));
assert_eq!(write_result.next(), None);
}
}