hacspec-lib 0.1.0-beta.1

The hacspec library.
Documentation
use hacspec_lib::{buf::ByteBuffer, *};

#[test]
fn create() {
    let s1 = Bytes::from_hex("deadbeef");
    let s2 = Bytes::from_hex("02deadbeef");
    let s3 = Bytes::from_hex("03deadbeef");
    let s4 = Bytes::from_hex("04deadbeef");

    let buffer = ByteBuffer::from_seq(s1);
    let buffer = buffer.concat_owned(s2);
    let buffer = buffer.concat_owned(s3);
    let buffer = buffer.concat_owned(s4);

    assert_secret_seq_eq!(
        Bytes::from_hex("deadbeef02deadbeef03deadbeef04deadbeef"),
        buffer.to_bytes(),
        Byte
    );
}

#[test]
fn split() {
    let s1 = Bytes::from_hex("deadbeef");
    let s2 = Bytes::from_hex("02deadbeef");
    let s3 = Bytes::from_hex("03deadbeef");
    let s4 = Bytes::from_hex("04deadbeef");

    let buffer = ByteBuffer::from_seq(s1);
    let buffer = buffer.concat_owned(s2);
    let buffer = buffer.concat_owned(s3);
    let buffer = buffer.concat_owned(s4);

    // get something shorter than the first bytes
    let (l3_bytes, remainder) = buffer.clone().split_off(3);

    assert_secret_seq_eq!(
        Bytes::from_hex("ef02deadbeef03deadbeef04deadbeef"),
        remainder.to_bytes(),
        Byte
    );

    assert_secret_seq_eq!(Bytes::from_hex("deadbe"), l3_bytes, Byte);

    // get something equal to the length of the first bytes
    let (l4_bytes, remainder) = buffer.clone().split_off(4);

    assert_secret_seq_eq!(
        Bytes::from_hex("02deadbeef03deadbeef04deadbeef"),
        remainder.to_bytes(),
        Byte
    );

    assert_secret_seq_eq!(Bytes::from_hex("deadbeef"), l4_bytes, Byte);

    // get something larger than the first bytes
    let (l7_bytes, remainder) = buffer.clone().split_off(7);

    assert_secret_seq_eq!(
        Bytes::from_hex("beef03deadbeef04deadbeef"),
        remainder.to_bytes(),
        Byte
    );

    assert_secret_seq_eq!(Bytes::from_hex("deadbeef02dead"), l7_bytes, Byte);

    // get something larger than the first bytes
    let (l9_bytes, remainder) = buffer.clone().split_off(9);

    assert_secret_seq_eq!(
        Bytes::from_hex("03deadbeef04deadbeef"),
        remainder.to_bytes(),
        Byte
    );

    assert_secret_seq_eq!(Bytes::from_hex("deadbeef02deadbeef"), l9_bytes, Byte);
}