use crate::command::{build, BuildError, Capdu};
pub fn get_data(tag_p1p2: u16) -> Result<Capdu, BuildError> {
let [p1, p2] = tag_p1p2.to_be_bytes();
build(0x80, 0xCA, p1, p2, &[], true)
}
#[cfg(test)]
mod tests {
use super::*;
use proptest::prelude::*;
use scll_test_util::HexSlice;
#[test]
fn card_recognition_data_tag_66() {
let apdu = get_data(0x0066).unwrap();
assert_eq!(HexSlice(&apdu), HexSlice([0x80, 0xCA, 0x00, 0x66, 0x00]));
}
#[test]
fn key_information_template_tag_00e0() {
let apdu = get_data(0x00E0).unwrap();
assert_eq!(HexSlice(&apdu), HexSlice([0x80, 0xCA, 0x00, 0xE0, 0x00]));
}
#[test]
fn iin_tag_0042_splits_both_p1_p2_bytes() {
let apdu = get_data(0x0042).unwrap();
assert_eq!(HexSlice(&apdu), HexSlice([0x80, 0xCA, 0x00, 0x42, 0x00]));
}
#[test]
fn high_tag_byte_is_p1() {
let apdu = get_data(0x9F7F).unwrap();
assert_eq!(HexSlice(&apdu), HexSlice([0x80, 0xCA, 0x9F, 0x7F, 0x00]));
}
proptest! {
#[test]
fn is_header_tag_le(tag in any::<u16>()) {
let apdu = get_data(tag).unwrap();
let [p1, p2] = tag.to_be_bytes();
let expected = [0x80, 0xCA, p1, p2, 0x00];
prop_assert_eq!(apdu.as_slice(), expected.as_slice());
}
}
}