sim-nest 0.2.1

The SIM constellation umbrella facade: one crate that re-exports the runtime kernel, codecs, number domains, and libraries behind features.
Documentation
use sim_codec::{Input, Output, decode_with_codec};
use sim_citizen::CitizenRuntime;
use sim_kernel::{
    CapabilitySet, ObjectCompat, ReadPolicy, TrustLevel, read_construct_capability,
};

use super::support::{codec_symbols, cx, encode_once};

#[test]
fn interference_study_roundtrips_through_every_general_codec() {
    let mut cx = cx();
    crate::interference_runtime::install_interference_records(&mut cx).unwrap();
    let study = crate::interference_runtime::StudyDescriptor::example();
    let expr = study.as_expr(&mut cx).unwrap();

    for codec in codec_symbols() {
        let encoded = encode_once(&mut cx, &codec, &expr);
        let input = match encoded {
            Output::Text(text) => Input::Text(text),
            Output::Bytes(bytes) => Input::Bytes(bytes),
        };
        let decoded = decode_with_codec(
            &mut cx,
            &codec,
            input,
            ReadPolicy {
                trust: TrustLevel::TrustedSource,
                capabilities: CapabilitySet::new().grant(read_construct_capability()),
            },
        )
        .unwrap_or_else(|error| panic!("codec {codec} failed Study decode: {error:?}"));
        assert!(
            decoded.canonical_eq(&expr),
            "codec {codec} changed the canonical interference Study"
        );
    }
}