use crate::Prefix;
use super::hash::EventHash;
pub trait WitnessProvider: Send + Sync {
fn observe_identity_head(&self, prefix: &Prefix) -> Option<EventHash>;
fn quorum(&self) -> usize {
1
}
fn is_enabled(&self) -> bool {
true
}
}
#[cfg(test)]
mod tests {
use super::*;
struct MockWitness {
head: Option<EventHash>,
quorum: usize,
}
impl WitnessProvider for MockWitness {
fn observe_identity_head(&self, _prefix: &Prefix) -> Option<EventHash> {
self.head
}
fn quorum(&self) -> usize {
self.quorum
}
}
#[test]
fn test_default_quorum() {
let witness = MockWitness {
head: None,
quorum: 1,
};
assert_eq!(witness.quorum(), 1);
}
#[test]
fn test_custom_quorum() {
let witness = MockWitness {
head: None,
quorum: 3,
};
assert_eq!(witness.quorum(), 3);
}
#[test]
fn test_is_enabled_default() {
let witness = MockWitness {
head: None,
quorum: 1,
};
assert!(witness.is_enabled());
}
}