v0.3.14-pre.003
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/continuity.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
|
||||
fn network() -> std::option::Option<ksp_store_lib::RawNetworkId> {
|
||||
return match ksp_store_lib::RawNetworkId::new("mainnet") {
|
||||
@@ -239,3 +239,39 @@ fn pre_002_gap_ledger_enforces_open_gap_bound_and_next_id_monotonicity() {
|
||||
assert!(stale_next.validate_invariants().is_err());
|
||||
return;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_003_websocket_incident_anchor_is_inclusive_monotone_and_bounded() {
|
||||
let mut anchor = match crate::RawTransactionIngestWebSocketIncidentAnchor::new(100, 1, 0, true, false) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => panic!("unexpected anchor failure: {error}"),
|
||||
};
|
||||
assert_eq!(anchor.start_slot(), 100);
|
||||
assert_eq!(anchor.end_slot(), std::option::Option::None);
|
||||
assert!(anchor.saw_reconnect());
|
||||
assert!(!anchor.saw_overflow());
|
||||
assert!(anchor.extend(2, 1, true, true).is_ok());
|
||||
assert!(anchor.saw_reconnect());
|
||||
assert!(anchor.saw_overflow());
|
||||
assert!(anchor.extend(1, 1, false, false).is_err());
|
||||
assert!(anchor.close_at(100 + super::MAX_RAW_TRANSACTION_INGEST_REPAIR_RANGE_SLOTS - 1).is_ok());
|
||||
assert_eq!(anchor.end_slot(), std::option::Option::Some(100 + super::MAX_RAW_TRANSACTION_INGEST_REPAIR_RANGE_SLOTS - 1));
|
||||
assert!(anchor.extend(3, 1, true, false).is_err());
|
||||
return;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_003_websocket_incident_anchor_rejects_missing_reason_reversal_and_oversize() {
|
||||
assert!(crate::RawTransactionIngestWebSocketIncidentAnchor::new(100, 0, 0, false, false).is_err());
|
||||
let mut reversed = match crate::RawTransactionIngestWebSocketIncidentAnchor::new(100, 0, 1, false, true) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => panic!("unexpected overflow anchor failure: {error}"),
|
||||
};
|
||||
assert!(reversed.close_at(99).is_err());
|
||||
let mut oversized = match crate::RawTransactionIngestWebSocketIncidentAnchor::new(100, 1, 0, true, false) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => panic!("unexpected oversize anchor fixture failure: {error}"),
|
||||
};
|
||||
assert!(oversized.close_at(100 + super::MAX_RAW_TRANSACTION_INGEST_REPAIR_RANGE_SLOTS).is_err());
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user