image4 0.8.2

A no_std-friendly library for parsing and generation of Image4 images written in pure Rust.
Documentation
use super::*;
use crate::{ManifestRef, PayloadRef, RestoreInfoRef};
use alloc::vec::Vec;
use der::{Decode, Encode};
use hex_literal::hex;

const TEST_PAYLOAD: &[u8] = &hex!(
    "303A1604494D3450160454455354161954657374496D6167654275696C646572
         2D313333372E302E310406666F6F6261723009020101020402C3D318"
);
const TEST_IMAGE: &[u8] = include_bytes!("../../tests/data/test.img4");
const TEST_MANIFEST: &[u8] = include_bytes!("../../tests/data/apticket.der");
const TEST_RESTORE_INFO: &[u8] =
    &hex!("30211604494D34523119FF8492B9864E1230101604424E434E0408A2169069D8D07E0F");

#[test]
fn test_decode() {
    let image = ImageRef::from_der(TEST_IMAGE).unwrap();
    let payload = PayloadRef::from_der(TEST_PAYLOAD).unwrap();
    let manifest = ManifestRef::from_der(TEST_MANIFEST).unwrap();
    let restore_info = RestoreInfoRef::from_der(TEST_RESTORE_INFO).unwrap();

    assert_eq!(image.payload, payload);
    assert_eq!(image.manifest.as_ref().unwrap(), &manifest);
    assert_eq!(image.restore_info.as_ref().unwrap(), &restore_info);
}

#[test]
fn test_encode() {
    let image = ImageRef::from_der(TEST_IMAGE).unwrap();
    let mut encoded = Vec::new();
    image.encode_to_vec(&mut encoded).unwrap();

    assert_eq!(encoded, TEST_IMAGE);
}