quorum-set 0.2.0

Quorum sets, hierarchical quorum trees, and quorum-accepted progress tracking for consensus protocols
Documentation
use std::fmt;

use super::QuorumTree;

impl<ID> fmt::Display for QuorumTree<ID>
where ID: Ord + fmt::Display
{
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        fmt::Display::fmt(&self.spec, f)
    }
}

#[cfg(test)]
mod tests {
    use super::QuorumTree;
    use crate::Node;

    fn id(i: u64) -> Node<u64> {
        Node::Id(i)
    }

    #[test]
    fn test_display_single_line() {
        let qset = QuorumTree::new(2, [id(3), id(1), id(2)]).unwrap();

        assert_eq!("2/(1,2,3)", qset.to_string());
    }

    #[test]
    fn test_display_multiline() {
        let qset = QuorumTree::new(2, [id(3), id(1), id(2)]).unwrap();
        let expected = r#"2/(
  1,
  2,
  3,
)"#;

        assert_eq!(expected, format!("{:#}", qset));
    }
}