Skip to content
Snippets Groups Projects
Commit b2ef1010 authored by Cédric Moreau's avatar Cédric Moreau
Browse files

feat: more tests (median)

parent 169ac6dd
No related branches found
No related tags found
No related merge requests found
......@@ -16,6 +16,7 @@
use crate::mock::*;
use crate::DistanceStatus::{Pending, Valid};
use crate::MedianResult::One;
use crate::{pallet, Error, MedianAcc, MedianResult};
use frame_support::traits::Len;
use frame_support::{assert_err, assert_noop, assert_ok};
......@@ -211,7 +212,130 @@ fn distance_failure() {
System::assert_has_event(RuntimeEvent::Distance(pallet::Event::EvaluationFailure {
0: *IDTY_0,
}));
// TODO: test: variant Two
});
}
#[test]
fn distance_with_odd_median() {
new_test_ext().execute_with(|| {
run_to_block(SESSION_0_START);
assert_ok!(Distance::evaluate_distance(RuntimeOrigin::signed(0)));
assert_eq!(
pallet::IdentitiesDistanceStatus::<Test>::get(IDTY_0),
Some(Pending)
);
// Evaluation #1
run_to_block(SESSION_2_START);
assert_ok!(Distance::update_evaluation(
RuntimeOrigin::none(),
ComputationResult {
distances: vec![Perbill::from_percent(70)]
}
));
// Evaluation #2
run_to_block(SESSION_2_START + 1);
assert_ok!(Distance::update_evaluation(
RuntimeOrigin::none(),
ComputationResult {
distances: vec![Perbill::from_percent(80)]
}
));
// Evaluation #3
run_to_block(SESSION_2_START + 2);
assert_ok!(Distance::update_evaluation(
RuntimeOrigin::none(),
ComputationResult {
distances: vec![Perbill::from_percent(80)]
}
));
// Check the median result
let pool = pallet::EvaluationPool2::<Test>::get();
let (_, median) = pool.0.get(0).unwrap();
assert_eq!(median.get_median(), Some(One(Perbill::from_percent(80))));
// Finally session 4
run_to_block(SESSION_3_START);
// distance failure
assert_eq!(
pallet::IdentitiesDistanceStatus::<Test>::get(IDTY_0),
Some(Valid)
);
System::assert_has_event(RuntimeEvent::Distance(pallet::Event::EvaluationSuccess {
0: *IDTY_0,
}));
});
}
#[test]
fn distance_with_even_median() {
new_test_ext().execute_with(|| {
run_to_block(SESSION_0_START);
assert_ok!(Distance::evaluate_distance(RuntimeOrigin::signed(0)));
assert_eq!(
pallet::IdentitiesDistanceStatus::<Test>::get(IDTY_0),
Some(Pending)
);
// Evaluation #1
run_to_block(SESSION_2_START);
assert_ok!(Distance::update_evaluation(
RuntimeOrigin::none(),
ComputationResult {
distances: vec![Perbill::from_percent(70)]
}
));
// Evaluation #2
run_to_block(SESSION_2_START + 1);
assert_ok!(Distance::update_evaluation(
RuntimeOrigin::none(),
ComputationResult {
distances: vec![Perbill::from_percent(90)]
}
));
// Check the median result
let pool = pallet::EvaluationPool2::<Test>::get();
let (_, median) = pool.0.get(0).unwrap();
assert_eq!(
median.get_median(),
Some(MedianResult::Two(
Perbill::from_percent(70),
Perbill::from_percent(90)
))
);
// Finally session 4
run_to_block(SESSION_3_START);
// distance failure
assert_eq!(
pallet::IdentitiesDistanceStatus::<Test>::get(IDTY_0),
Some(Valid)
);
System::assert_has_event(RuntimeEvent::Distance(pallet::Event::EvaluationSuccess {
0: *IDTY_0,
}));
});
}
#[test]
fn distance_not_processed() {
new_test_ext().execute_with(|| {
run_to_block(SESSION_0_START);
assert_ok!(Distance::evaluate_distance(RuntimeOrigin::signed(0)));
assert_eq!(
pallet::IdentitiesDistanceStatus::<Test>::get(IDTY_0),
Some(Pending)
);
// Directly to session S+3
run_to_block(SESSION_3_START);
// distance failure
assert_eq!(pallet::IdentitiesDistanceStatus::<Test>::get(IDTY_0), None); // Pending has gone
System::assert_has_event(RuntimeEvent::Distance(
pallet::Event::EvaluationNotProcessed { 0: *IDTY_0 },
));
});
}
......@@ -221,7 +345,7 @@ fn distance_failure() {
// }
// TODO: evaluate_distance => Err::NoIdentity
// TODO: evaluate_distance => Err::AlreadyInEvaluation
// TODO: evaluate_distance => Err::AlreadyInEvaluation ==> devrait être correctement levée depuis l'ajout de Pending
// TODO: evaluate_distance => Err::QueueFull (1)
// TODO: evaluate_distance => Err::QueueFull (2)
// TODO: Err::ManyEvaluationsInBlock
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment