pub use dig_merkle::{
Bytes32, Coin, CoinSpend, DataStore, DidRef, DigDataStoreMetadata, MerkleCoinSpend,
};
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct RootHistory {
pub roots: Vec<Bytes32>,
}
impl RootHistory {
pub fn latest(&self) -> Option<Bytes32> {
self.roots.last().copied()
}
pub fn generation_count(&self) -> usize {
self.roots.len()
}
}
#[cfg(test)]
mod tests {
use super::*;
fn id(b: u8) -> Bytes32 {
Bytes32::new([b; 32])
}
#[test]
fn root_history_reports_latest_and_generation_count() {
let empty = RootHistory::default();
assert_eq!(empty.latest(), None);
assert_eq!(empty.generation_count(), 0);
let history = RootHistory {
roots: vec![id(1), id(2), id(3)],
};
assert_eq!(history.latest(), Some(id(3)));
assert_eq!(history.generation_count(), 3);
}
}