Skip to content

Commit

Permalink
Add test for signed entity type discriminant ordering
Browse files Browse the repository at this point in the history
  • Loading branch information
Alenar committed May 3, 2024
1 parent f36ddb2 commit 48e1bc9
Showing 1 changed file with 54 additions and 1 deletion.
55 changes: 54 additions & 1 deletion mithril-common/src/entities/signed_entity_type.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ const ENTITY_TYPE_CARDANO_TRANSACTIONS: usize = 3;
/// are identified by their discriminant (i.e. index in the enum), thus the
/// modification of this type should only ever consist of appending new
/// variants.
// Important note: The order of the variants is important as it is used for the derived Ord trait.
#[derive(Display, Debug, Clone, PartialEq, Eq, Serialize, Deserialize, EnumDiscriminants)]
#[strum(serialize_all = "PascalCase")]
#[strum_discriminants(derive(EnumString, AsRefStr, Serialize, Deserialize, PartialOrd, Ord))]
Expand Down Expand Up @@ -162,4 +163,56 @@ impl SignedEntityTypeDiscriminants {
}

#[cfg(test)]
mod tests {}
mod tests {
use super::*;

// Expected ord:
// MithrilStakeDistribution < CardanoStakeDistribution < CardanoImmutableFilesFull < CardanoTransactions
#[test]
fn ordering_discriminant() {
let mut list = vec![
SignedEntityTypeDiscriminants::CardanoStakeDistribution,
SignedEntityTypeDiscriminants::CardanoTransactions,
SignedEntityTypeDiscriminants::CardanoImmutableFilesFull,
SignedEntityTypeDiscriminants::MithrilStakeDistribution,
];
list.sort();

assert_eq!(
list,
vec![
SignedEntityTypeDiscriminants::MithrilStakeDistribution,
SignedEntityTypeDiscriminants::CardanoStakeDistribution,
SignedEntityTypeDiscriminants::CardanoImmutableFilesFull,
SignedEntityTypeDiscriminants::CardanoTransactions,
]
);
}

#[test]
fn ordering_discriminant_with_duplicate() {
let mut list = vec![
SignedEntityTypeDiscriminants::CardanoStakeDistribution,
SignedEntityTypeDiscriminants::MithrilStakeDistribution,
SignedEntityTypeDiscriminants::CardanoTransactions,
SignedEntityTypeDiscriminants::CardanoStakeDistribution,
SignedEntityTypeDiscriminants::CardanoImmutableFilesFull,
SignedEntityTypeDiscriminants::MithrilStakeDistribution,
SignedEntityTypeDiscriminants::MithrilStakeDistribution,
];
list.sort();

assert_eq!(
list,
vec![
SignedEntityTypeDiscriminants::MithrilStakeDistribution,
SignedEntityTypeDiscriminants::MithrilStakeDistribution,
SignedEntityTypeDiscriminants::MithrilStakeDistribution,
SignedEntityTypeDiscriminants::CardanoStakeDistribution,
SignedEntityTypeDiscriminants::CardanoStakeDistribution,
SignedEntityTypeDiscriminants::CardanoImmutableFilesFull,
SignedEntityTypeDiscriminants::CardanoTransactions,
]
);
}
}

0 comments on commit 48e1bc9

Please sign in to comment.