algeon-query-runtime 0.1.2

Native query runtime, lifecycle, ledger, and observation owners.
Documentation
use std::time::Duration;

use super::{SourceReadFact, SourceReadTotals};

#[test]
fn every_counter_in_a_fact_advances_even_after_one_saturates() {
    let mut totals = SourceReadTotals { parquet_files: u64::MAX, ..SourceReadTotals::default() };

    let exact = totals.apply(&SourceReadFact::ParquetSource {
        files: 1,
        known_bytes: 10,
        selected_row_groups: 3,
        read_columns: 2,
    });

    assert!(!exact, "a saturated counter must make the fold report inexact totals");
    assert_eq!(totals.parquet_files, u64::MAX);
    assert_eq!(totals.parquet_bytes_known, 10);
    assert_eq!(totals.row_groups_selected, 3);
    assert_eq!(totals.read_columns, 2);
}

#[test]
fn durations_saturate_instead_of_wrapping() {
    let mut totals = SourceReadTotals { parquet_read_time: Duration::MAX, ..SourceReadTotals::default() };

    assert!(!totals.apply(&SourceReadFact::ParquetReadTime(Duration::from_secs(1))));
    assert_eq!(totals.parquet_read_time, Duration::MAX);
}