ic-host-artifacts 0.62.1

Bounded host artifact streams, identities, gzip and Wasm tooling
Documentation
use super::{BatchLabelError, validate_labels};

#[test]
fn exact_labels_preserve_empty_batch_whitespace_and_case() {
    assert_eq!(validate_labels([]), Ok(()));
    assert_eq!(validate_labels(["a", "A", " a", " "]), Ok(()));
    assert_eq!(validate_labels(["é", "e\u{301}"]), Ok(()));
}

#[test]
fn validation_stops_at_the_first_invalid_entry() {
    let mut examined = 0;
    let labels = ["first", "first", "unused"]
        .into_iter()
        .inspect(|_| examined += 1);
    assert_eq!(
        validate_labels(labels),
        Err(BatchLabelError::Duplicate {
            label: "first".into(),
            first_index: 0,
            duplicate_index: 1,
        })
    );
    assert_eq!(examined, 2);
}

#[test]
fn first_invalid_entry_and_original_duplicate_position_are_retained() {
    assert_eq!(
        validate_labels(["a", "", "a"]),
        Err(BatchLabelError::Empty { index: 1 })
    );
    assert_eq!(
        validate_labels(["a", "b", "a", ""]),
        Err(BatchLabelError::Duplicate {
            label: "a".into(),
            first_index: 0,
            duplicate_index: 2,
        })
    );
    assert_eq!(
        validate_labels(["a", "b", "b"]),
        Err(BatchLabelError::Duplicate {
            label: "b".into(),
            first_index: 1,
            duplicate_index: 2,
        })
    );
}