Skip to main content

first_receipt_difference

Function first_receipt_difference 

Source
pub fn first_receipt_difference<'a>(
    expected: &'a [ScenarioReceiptEvent],
    actual: &'a [ScenarioReceiptEvent],
) -> Option<ReceiptDifference<'a>>
Expand description

Returns the first event difference, or None when both receipts are equal.

Compares every field using the existing event equality semantics. A shared prefix followed by an extra event differs at the prefix’s length. Comparison allocates no copy of either receipt and never truncates identifiers; only the returned diagnostic’s formatting has an output limit.

use std::time::Duration;
use lenso_test::{TestSimulator, ScenarioTransition, first_receipt_difference};

let simulator = TestSimulator::new();
let expected = simulator.receipt();
expected.transition("generation-1", "job-1", ScenarioTransition::Started)?;
simulator.advance(Duration::from_millis(1));
let actual = simulator.receipt();
actual.transition("generation-1", "job-1", ScenarioTransition::Started)?;
let expected_events = expected.events();
let actual_events = actual.events();
let difference = first_receipt_difference(&expected_events, &actual_events).unwrap();
assert_eq!(difference.index, 0);
assert_eq!(difference.actual.unwrap().virtual_time, Duration::from_millis(1));
assert!(difference.to_string().contains("time_ns=1000000"));