srec 0.2.0

Parsing and generating Motorola S-record (SRECORD/SREC) files
Documentation
#[test]
fn test_read_lf() {
    let s = "S00600004844521B\nS107123400010203AC\nS10712380405060798\nS9031234B6\n";

    let mut records = srec::reader::read_records(&s);

    assert_eq!(records.next(), Some(Ok(srec::Record::S0("HDR".into()))));
    assert_eq!(
        records.next(),
        Some(Ok(srec::Record::S1(srec::Data {
            address: srec::Address16(0x1234),
            data: vec![0x00, 0x01, 0x02, 0x03],
        })))
    );
    assert_eq!(
        records.next(),
        Some(Ok(srec::Record::S1(srec::Data {
            address: srec::Address16(0x1238),
            data: vec![0x04, 0x05, 0x06, 0x07],
        })))
    );
    assert_eq!(
        records.next(),
        Some(Ok(srec::Record::S9(srec::Address16(0x1234))))
    );
    assert_eq!(records.next(), None);
}

#[test]
fn test_read_crlf() {
    let s = "S00600004844521B\r\nS107123400010203AC\r\nS10712380405060798\r\nS9031234B6\r\n";

    let mut records = srec::reader::read_records(&s);

    assert_eq!(records.next(), Some(Ok(srec::Record::S0("HDR".into()))));
    assert_eq!(
        records.next(),
        Some(Ok(srec::Record::S1(srec::Data {
            address: srec::Address16(0x1234),
            data: vec![0x00, 0x01, 0x02, 0x03],
        })))
    );
    assert_eq!(
        records.next(),
        Some(Ok(srec::Record::S1(srec::Data {
            address: srec::Address16(0x1238),
            data: vec![0x04, 0x05, 0x06, 0x07],
        })))
    );
    assert_eq!(
        records.next(),
        Some(Ok(srec::Record::S9(srec::Address16(0x1234))))
    );
    assert_eq!(records.next(), None);
}

#[test]
fn test_read_lf_with_err() {
    let s = "S00600004844521B\nS107123400010203AC\nS10712380405060798\nS9031234B4\n";

    let mut records = srec::reader::read_records(&s);

    assert_eq!(records.next(), Some(Ok(srec::Record::S0("HDR".into()))));
    assert_eq!(
        records.next(),
        Some(Ok(srec::Record::S1(srec::Data {
            address: srec::Address16(0x1234),
            data: vec![0x00, 0x01, 0x02, 0x03],
        })))
    );
    assert_eq!(
        records.next(),
        Some(Ok(srec::Record::S1(srec::Data {
            address: srec::Address16(0x1238),
            data: vec![0x04, 0x05, 0x06, 0x07],
        })))
    );
    assert_eq!(
        records.next(),
        Some(Err(srec::reader::Error::ChecksumMismatch))
    );
    assert_eq!(records.next(), None);
}

#[test]
fn test_read_crlf_with_err() {
    let s = "S00600004844521B\r\nS107123400010203AC\r\nS10712380405060798\r\nS9031234B4\r\n";

    let mut records = srec::reader::read_records(&s);

    assert_eq!(records.next(), Some(Ok(srec::Record::S0("HDR".into()))));
    assert_eq!(
        records.next(),
        Some(Ok(srec::Record::S1(srec::Data {
            address: srec::Address16(0x1234),
            data: vec![0x00, 0x01, 0x02, 0x03],
        })))
    );
    assert_eq!(
        records.next(),
        Some(Ok(srec::Record::S1(srec::Data {
            address: srec::Address16(0x1238),
            data: vec![0x04, 0x05, 0x06, 0x07],
        })))
    );
    assert_eq!(
        records.next(),
        Some(Err(srec::reader::Error::ChecksumMismatch))
    );
    assert_eq!(records.next(), None);
}