blob-stream 0.0.3

Blob transfer over chunks (datagrams)
Documentation
/*
 * Copyright (c) Peter Bjorklund. All rights reserved. https://github.com/nimble-rust/nimble
 * Licensed under the MIT License. See LICENSE in the project root for license information.
 */
use blob_stream::in_stream::BlobStreamIn;
pub mod helper;

#[test_log::test]
fn chunks_out_of_order() {
    const CHUNK_SIZE: usize = 4;
    const CHUNK_COUNT: usize = 3;
    let mut stream = BlobStreamIn::new((CHUNK_COUNT - 1) * CHUNK_SIZE + 1, CHUNK_SIZE);

    assert!(
        !stream.is_complete(),
        "Stream should not be complete initially"
    );

    stream
        .set_chunk(1, &[0xff, 0xfe, 0xfd, 0xfc])
        .expect("Setting chunk 1 should work");

    stream
        .set_chunk(0, &[0x31, 0x32, 0x33, 0x34])
        .expect("Setting chunk 0 should work");

    assert!(!stream.is_complete());

    stream
        .set_chunk(2, &[0x42])
        .expect("Setting chunk 2 should work");

    assert!(
        stream.is_complete(),
        "Stream should be complete after setting all chunks"
    );
    assert_eq!(
        stream.blob().expect("Blob slice should be complete"),
        &[0x31, 0x32, 0x33, 0x34, 0xff, 0xfe, 0xfd, 0xfc, 0x42]
    )
}