ic-platform 0.30.0

Controlled Candid and IC runtime dependency boundary
Documentation
use super::*;
use crate::candid_codec::{
    decoder::{Limits, decode_one},
    encode_one,
};
#[test]
fn reserved_preserves_serde_wire_and_validated_skipping() {
    let limits = Limits {
        bytes: 4096,
        header: 1024,
        types: 64,
        work: 10000,
        allocation: 10000,
    };
    assert_eq!(
        encode_one(&Reserved, 1024).unwrap(),
        candid::encode_one(candid::Reserved).unwrap()
    );
    assert_eq!(
        serde_json::to_vec(&Reserved).unwrap(),
        serde_json::to_vec(&candid::Reserved).unwrap()
    );
    assert_eq!(
        serde_cbor::to_vec(&Reserved).unwrap(),
        serde_cbor::to_vec(&candid::Reserved).unwrap()
    );
    for bytes in [
        candid::encode_one(42u64).unwrap(),
        candid::encode_one(vec![Some("text")]).unwrap(),
    ] {
        assert_eq!(decode_one::<Reserved>(&bytes, limits).unwrap(), Reserved);
        for end in 0..bytes.len() {
            assert!(decode_one::<Reserved>(&bytes[..end], limits).is_err());
        }
        assert!(decode_one::<Reserved>(&bytes, Limits { work: 0, ..limits }).is_err());
    }
    for text in ["null", "42", "{\"x\":[1,2]}"] {
        assert!(serde_json::from_str::<Reserved>(text).is_ok());
        assert!(serde_json::from_str::<candid::Reserved>(text).is_ok());
    }
}