Merge 1612a7d83d
into 9adfbdddc6
This commit is contained in:
commit
1f5587c8e6
|
@ -22,6 +22,7 @@ pub struct Branches<Id> {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
|
#[cfg_attr(test, derive(PartialEq))]
|
||||||
pub struct Branch<Id> {
|
pub struct Branch<Id> {
|
||||||
id: Id,
|
id: Id,
|
||||||
parent: Id,
|
parent: Id,
|
||||||
|
@ -131,6 +132,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Error)]
|
#[derive(Debug, Clone, Error)]
|
||||||
|
#[cfg_attr(test, derive(PartialEq))]
|
||||||
pub enum Error<Id> {
|
pub enum Error<Id> {
|
||||||
#[error("Parent block: {0:?} is not know to this node")]
|
#[error("Parent block: {0:?} is not know to this node")]
|
||||||
ParentMissing(Id),
|
ParentMissing(Id),
|
||||||
|
@ -220,7 +222,7 @@ where
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
pub mod tests {
|
pub mod tests {
|
||||||
use super::Cryptarchia;
|
use super::{Cryptarchia, Error, Slot};
|
||||||
use crate::Config;
|
use crate::Config;
|
||||||
use std::hash::{DefaultHasher, Hash, Hasher};
|
use std::hash::{DefaultHasher, Hash, Hasher};
|
||||||
|
|
||||||
|
@ -320,4 +322,58 @@ pub mod tests {
|
||||||
res[..8].copy_from_slice(&hash.to_be_bytes());
|
res[..8].copy_from_slice(&hash.to_be_bytes());
|
||||||
res
|
res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_getters() {
|
||||||
|
let engine = Cryptarchia::from_genesis([0; 32], config());
|
||||||
|
let parent = engine.genesis();
|
||||||
|
|
||||||
|
// Get branch directly from HashMap
|
||||||
|
let branch1 = engine
|
||||||
|
.branches
|
||||||
|
.get(&parent)
|
||||||
|
.ok_or("At least one branch should be there");
|
||||||
|
|
||||||
|
let branches = engine.branches();
|
||||||
|
|
||||||
|
// Get branch using getter
|
||||||
|
let branch2 = branches
|
||||||
|
.get(&parent)
|
||||||
|
.ok_or("At least one branch should be there");
|
||||||
|
|
||||||
|
assert_eq!(branch1, branch2);
|
||||||
|
assert_eq!(
|
||||||
|
branch1.expect("id is not set").id(),
|
||||||
|
branch2.expect("id is not set").id()
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
branch1.expect("parent is not set").parent(),
|
||||||
|
branch2.expect("parent is not set").parent()
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
branch1.expect("slot is not set").slot(),
|
||||||
|
branch2.expect("slot is not set").slot()
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
branch1.expect("length is not set").length(),
|
||||||
|
branch2.expect("length is not set").length()
|
||||||
|
);
|
||||||
|
|
||||||
|
let slot = Slot::genesis();
|
||||||
|
|
||||||
|
assert_eq!(slot + 10u64, Slot::from(10));
|
||||||
|
|
||||||
|
let strange_engine = Cryptarchia::from_genesis([100; 32], config());
|
||||||
|
let not_a_parent = strange_engine.genesis();
|
||||||
|
|
||||||
|
_ = match branches
|
||||||
|
.get(¬_a_parent)
|
||||||
|
.ok_or(Error::ParentMissing(not_a_parent))
|
||||||
|
{
|
||||||
|
Ok(_) => panic!("Parent should not be related to this branch"),
|
||||||
|
Err(e) => {
|
||||||
|
assert_ne!(e, Error::ParentMissing(parent));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue