mod common;
use deer::{Deserialize, Number};
use deer_desert::{assert_tokens, assert_tokens_error, error, Token};
use serde_json::json;
#[test]
fn array_u8_ok() {
let array = [0u8, 1, 2, 3, 4, 5, 6, 7];
assert_tokens(&array, &[
Token::Array { length: Some(8) },
Token::Number(Number::from(0)),
Token::Number(Number::from(1)),
Token::Number(Number::from(2)),
Token::Number(Number::from(3)),
Token::Number(Number::from(4)),
Token::Number(Number::from(5)),
Token::Number(Number::from(6)),
Token::Number(Number::from(7)),
Token::ArrayEnd,
]);
}
#[test]
fn array_u8_err_inner() {
assert_tokens_error::<[u8; 8]>(
&error! {
ns: "deer",
id: ["value"],
properties: {
"expected": u8::reflection(),
"received": 256,
"location": [{
"type": "array",
"value": 4
}]
}
},
&[
Token::Array { length: Some(8) },
Token::Number(Number::from(0)),
Token::Number(Number::from(1)),
Token::Number(Number::from(2)),
Token::Number(Number::from(3)),
Token::Number(Number::from(256)),
Token::Number(Number::from(5)),
Token::Number(Number::from(6)),
Token::Number(Number::from(7)),
Token::ArrayEnd,
],
);
}
#[test]
fn array_u8_err_too_many() {
assert_tokens_error::<[u8; 1]>(
&error! {
ns: "deer",
id: ["array", "length"],
properties: {
"expected": 1,
"received": 2,
"location": []
}
},
&[
Token::Array { length: Some(2) },
Token::Number(Number::from(0)),
Token::Number(Number::from(1)),
Token::ArrayEnd,
],
);
}
#[test]
fn array_u8_err_not_enough() {
assert_tokens_error::<[u8; 3]>(
&error!([
{
ns: "deer",
id: ["value", "missing"],
properties: {
"expected": u8::reflection(),
"location": [{
"type": "array",
"value": 2
}]
}
},
{
ns: "deer",
id: ["array", "length"],
properties: {
"expected": 3,
"received": 2,
"location": []
}
}
]),
&[
Token::Array { length: Some(2) },
Token::Number(Number::from(0)),
Token::Number(Number::from(1)),
Token::ArrayEnd,
],
);
}