sim-lib-stream-core 0.1.3

Core stream metadata, packets, envelopes, and buffer values.
Documentation
use crate::{StreamCassette, TransportProfile, spine::PushResult};

use super::{diagnostic_metadata, item};

#[test]
fn stream_cassette_rejects_open_push_stream_after_temporary_gap() {
    let stream = crate::StreamValue::push(diagnostic_metadata());
    assert_eq!(
        stream.push_packet(item("early")).unwrap(),
        PushResult::Accepted
    );

    let err =
        StreamCassette::from_stream_value(&stream, TransportProfile::memory_local()).unwrap_err();

    assert!(format!("{err}").contains("has not reached done"));
    assert!(!stream.is_done().unwrap());
    assert_eq!(
        stream.push_packet(item("late")).unwrap(),
        PushResult::Accepted
    );
    stream.close_push().unwrap();
    assert_eq!(stream.next_packet().unwrap(), Some(item("late")));
    assert!(stream.is_done().unwrap());
}