icydb-schema 0.300.0

Bounded public schema proposal contract for IcyDB
Documentation
use super::*;

#[test]
fn attempts_are_distinct_bounded_and_repeatable() {
    let key = generated_schema_submission_key(b"source", Some(b"plan"), 0, &[]);
    assert_eq!(
        key,
        generated_schema_submission_key(b"source", Some(b"plan"), 0, &[])
    );
    for different in [
        generated_schema_submission_key(b"source", Some(b"plan"), 1, &[]),
        generated_schema_submission_key(b"sources", Some(b"plan"), 0, &[]),
        generated_schema_submission_key(b"source", Some(b"plans"), 0, &[]),
        generated_schema_submission_key(b"source", None, 0, &[]),
        generated_schema_submission_key(b"source", Some(b"plan"), u64::MAX, &[]),
    ] {
        assert_ne!(key, different);
        assert!(crate::SchemaSubmissionKey::try_new(different).is_ok());
    }
}
#[test]
fn assignments_and_modes_bind_readiness_but_input_order_does_not() {
    let bindings = [("E", "StoreA", Some("key_a")), ("F", "StoreB", None)];
    let key = generated_schema_submission_key(b"source", None, 0, &bindings);
    assert_eq!(
        key,
        generated_schema_submission_key(b"source", None, 0, &[bindings[1], bindings[0]])
    );
    for changed in [
        [("E", "StoreB", Some("key_a")), bindings[1]],
        [("E", "StoreA", None), bindings[1]],
        [("E", "StoreA", Some("key_b")), bindings[1]],
    ] {
        assert_ne!(
            key,
            generated_schema_submission_key(b"source", None, 0, &changed)
        );
    }
}