#![allow(missing_docs)]
use wolfcose::{CborDecoder, CborEncoder, CborMajorType, Error};
#[test]
fn cbor_primitive_edge_cases_are_covered() {
assert_eq!(CborMajorType::from_raw(99), None);
assert_eq!(
CborMajorType::TEXT.raw(),
wolfcose::raw::WOLFCOSE_CBOR_TSTR as u8
);
let mut empty = CborDecoder::new(&[]);
assert!(empty.is_empty());
assert_eq!(empty.peek_type(), None);
assert_eq!(empty.peek_initial_byte(), None);
assert_eq!(empty.decode_head(), Err(Error::CborMalformed));
let mut out = [0; 64];
let len = {
let mut encoder = CborEncoder::new(&mut out);
assert!(encoder.is_empty());
encoder.encode_bstr(&[]).unwrap();
encoder.encode_tstr("").unwrap();
encoder.encode_true().unwrap();
encoder.encode_false().unwrap();
encoder.encode_null().unwrap();
encoder.len()
};
let mut decoder = CborDecoder::new(&out[..len]);
let bstr = decoder.decode_head().unwrap();
assert_eq!(bstr.major_type, CborMajorType::BYTES);
assert_eq!(bstr.data, Some(&[][..]));
let tstr = decoder.decode_head().unwrap();
assert_eq!(tstr.major_type, CborMajorType::TEXT);
assert_eq!(tstr.data, Some(&[][..]));
assert!(decoder.decode_bool().unwrap());
assert!(!decoder.decode_bool().unwrap());
decoder.decode_null().unwrap();
assert!(decoder.is_finished());
let mut encoded = [0; 8];
let len = {
let mut encoder = CborEncoder::new(&mut encoded);
encoder.encode_u64(1).unwrap();
encoder.len()
};
let mut decoder = CborDecoder::new(&encoded[..len]);
assert_eq!(decoder.decode_null(), Err(Error::CborType));
let mut decoder = CborDecoder::new(&encoded[..len]);
assert_eq!(decoder.decode_bool(), Err(Error::CborType));
let mut encoded = [0; 8];
let len = {
let mut encoder = CborEncoder::new(&mut encoded);
encoder.encode_null().unwrap();
encoder.len()
};
let mut decoder = CborDecoder::new(&encoded[..len]);
assert_eq!(decoder.decode_bool(), Err(Error::CborType));
let mut encoded = [0; 8];
let len = {
let mut encoder = CborEncoder::new(&mut encoded);
encoder.encode_bstr(&[]).unwrap();
encoder.len()
};
let mut decoder = CborDecoder::new(&encoded[..len]);
assert_eq!(decoder.decode_bstr().unwrap(), b"");
let len = {
let mut encoder = CborEncoder::new(&mut encoded);
encoder.encode_tstr("").unwrap();
encoder.len()
};
let mut decoder = CborDecoder::new(&encoded[..len]);
assert_eq!(decoder.decode_tstr_bytes().unwrap(), b"");
}