extra-embedded-io-adapters 0.1.0

Implementations of embedded-io's Write trait for other crates' types
Documentation
extern crate alloc;

use super::{WritableCrc, WritableDigest};

#[cfg(feature = "ciborium_0_2")]
mod writer;
#[cfg(feature = "ciborium_0_2")]
use writer::DummyWriter;

#[cfg(feature = "ciborium_0_2")]
use super::ForeignWritable;

#[cfg(feature = "ciborium_0_2")]
#[test]
fn single_write_cborium() {
    use ciborium_ll;

    let mut writer = DummyWriter::new();
    let mut wrapped = ForeignWritable(&mut writer);
    let mut encoder = ciborium_ll::Encoder::from(&mut wrapped);
    encoder.push(ciborium_ll::Header::Array(Some(1))).unwrap();
    encoder.text("Hello World", None).unwrap();
    assert_eq!(writer.all_written().len(), 13);
}

#[test]
fn write_crc() {
    use embedded_io::Write;

    let crc_impl = crc::Crc::<u32>::new(&crc::CRC_32_BZIP2);
    let mut wrapped = WritableCrc(crc_impl.digest());
    let Ok(()) = wrapped.write_all(b"Hello ");
    let Ok(()) = wrapped.write_all(b"World");
    let mut reference = crc_impl.digest();
    reference.update(b"Hello World");
    assert_eq!(wrapped.0.finalize(), reference.finalize());
}

#[test]
fn write_sha() {
    use embedded_io::Write;
    use sha2::Digest;

    let mut wrapped = WritableDigest(sha2::Sha256::new());
    let Ok(()) = wrapped.write_all(b"Hello ");
    let Ok(()) = wrapped.write_all(b"World");
    assert_eq!(
        &wrapped.0.finalize()[..],
        &[
            165, 145, 166, 212, 11, 244, 32, 64, 74, 1, 23, 51, 207, 183, 177, 144, 214, 44, 101,
            191, 11, 205, 163, 43, 87, 178, 119, 217, 173, 159, 20, 110
        ]
    );
}