use super::*;
use crate::{model::settlement::SettlementContext, tests::support::operation_plan::hash};
#[test]
fn every_original_identity_field_and_rejection_order_is_bound() {
let expected = IcInventorySettlement {
context: SettlementContext {
authority: hash("12"),
mutation_attempt: 1,
observation_attempt: 2,
challenge: hash("34"),
observation_evidence: hash("56"),
evidence: hash("78"),
},
baseline: hash("90"),
inventory: hash("ab"),
attribution: IcInventoryAttribution::Unresolved {
uncertainty: hash("cd"),
},
};
let change = |claim: &mut IcInventorySettlement, field| match field {
0 => claim.context.authority = hash("ef"),
1 => claim.context.mutation_attempt = 3,
2 => claim.context.observation_attempt = 3,
3 => claim.context.challenge = hash("ef"),
4 => claim.baseline = hash("ef"),
5 => claim.inventory = hash("ef"),
_ => claim.context.observation_evidence = hash("ef"),
};
for (field, error) in [
InventorySettlementMismatch::Authority,
InventorySettlementMismatch::Attempt,
InventorySettlementMismatch::Attempt,
InventorySettlementMismatch::Challenge,
InventorySettlementMismatch::Baseline,
InventorySettlementMismatch::Inventory,
InventorySettlementMismatch::ObservationEvidence,
]
.into_iter()
.enumerate()
{
for combined in [false, true] {
let mut changed = expected.clone();
let end = if combined { 7 } else { field + 1 };
for index in field..end {
change(&mut changed, index);
}
assert_eq!(
compare_identity(
&changed,
&SettlementIdentity::from(&expected.context),
&expected.baseline,
&expected.inventory,
&expected.context.observation_evidence
)
.unwrap_err(),
error
);
}
}
assert_eq!(
compare_identity(
&expected,
&SettlementIdentity::from(&expected.context),
&expected.baseline,
&expected.inventory,
&expected.context.observation_evidence
),
Ok(())
);
}