#![cfg(feature = "std")]
const VECTORS: &[(&str, &str)] = &[
(r#"0"#, "00"),
(r#"1"#, "01"),
(r#"10"#, "0a"),
(r#"23"#, "17"),
(r#"24"#, "1818"),
(r#"25"#, "1819"),
(r#"100"#, "1864"),
(r#"1000"#, "1903e8"),
(r#"1000000"#, "1a000f4240"),
(r#"1000000000000"#, "1b000000e8d4a51000"),
(r#"18446744073709551615"#, "1bffffffffffffffff"),
(r#"-18446744073709551616"#, "3bffffffffffffffff"),
(
r#"2(h'01 00 00 00 00 00 00 00 00')"#,
"c249010000000000000000",
),
(
r#"3(h'01 00 00 00 00 00 00 00 00')"#,
"c349010000000000000000",
),
(r#"-1"#, "20"),
(r#"-10"#, "29"),
(r#"-100"#, "3863"),
(r#"-1000"#, "3903e7"),
(r#"0e0"#, "f90000"),
(r#"-0e0"#, "f98000"),
(r#"1e0"#, "f93c00"),
(r#"1.1e0"#, "fb3ff199999999999a"),
(r#"1.5e0"#, "f93e00"),
(r#"6.5504e4"#, "f97bff"),
(r#"1e5"#, "fa47c35000"),
(r#"3.4028234663852886e38"#, "fa7f7fffff"),
(r#"1e300"#, "fb7e37e43c8800759c"),
(r#"5.960464477539063e-8"#, "f90001"),
(r#"6.103515625e-5"#, "f90400"),
(r#"-4e0"#, "f9c400"),
(r#"-4.1e0"#, "fbc010666666666666"),
(r#"inf"#, "f97c00"),
(r#"NaN"#, "f97e00"),
(r#"-inf"#, "f9fc00"),
(r#"inf"#, "fa7f800000"),
(r#"NaN"#, "fa7fc00000"),
(r#"-inf"#, "faff800000"),
(r#"inf"#, "fb7ff0000000000000"),
(r#"NaN"#, "fb7ff8000000000000"),
(r#"-inf"#, "fbfff0000000000000"),
(r#"false"#, "f4"),
(r#"true"#, "f5"),
(r#"null"#, "f6"),
(r#"undefined"#, "f7"),
(r#"simple(16)"#, "f0"),
(r#"simple(255)"#, "f8ff"),
(
r#"0("2013-03-21T20:04:00Z")"#,
"c074323031332d30332d32315432303a30343a30305a",
),
(r#"1(1363896240)"#, "c11a514b67b0"),
(r#"1(1.3638962405e9)"#, "c1fb41d452d9ec200000"),
(r#"23(h'01 02 03 04')"#, "d74401020304"),
(r#"24(h'64 49 45 54 46')"#, "d818456449455446"),
(
r#"32("http://www.example.com")"#,
"d82076687474703a2f2f7777772e6578616d706c652e636f6d",
),
(r#"h''"#, "40"),
(r#"h'01 02 03 04'"#, "4401020304"),
(r#""""#, "60"),
(r#""a""#, "6161"),
(r#""IETF""#, "6449455446"),
(r#"""\""#, "62225c"),
(r#""ü""#, "62c3bc"),
(r#""水""#, "63e6b0b4"),
(r#""𐅑""#, "64f0908591"),
(r#"[]"#, "80"),
(r#"[1, 2, 3]"#, "83010203"),
(r#"[1, [2, 3], [4, 5]]"#, "8301820203820405"),
(
r#"[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]"#,
"98190102030405060708090a0b0c0d0e0f101112131415161718181819",
),
(r#"{}"#, "a0"),
(r#"{1: 2, 3: 4}"#, "a201020304"),
(r#"{"a": 1, "b": [2, 3]}"#, "a26161016162820203"),
(r#"["a", {"b": "c"}]"#, "826161a161626163"),
(
r#"{"a": "A", "b": "B", "c": "C", "d": "D", "e": "E"}"#,
"a56161614161626142616361436164614461656145",
),
(r#"(_ h'01 02', h'03 04 05')"#, "5f42010243030405ff"),
(r#"(_ "strea", "ming")"#, "7f657374726561646d696e67ff"),
(r#"[_ ]"#, "9fff"),
(r#"[_ 1, [2, 3], [_ 4, 5]]"#, "9f018202039f0405ffff"),
(r#"[_ 1, [2, 3], [4, 5]]"#, "9f01820203820405ff"),
(r#"[1, [2, 3], [_ 4, 5]]"#, "83018202039f0405ff"),
(r#"[1, [_ 2, 3], [4, 5]]"#, "83019f0203ff820405"),
(
r#"[_ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]"#,
"9f0102030405060708090a0b0c0d0e0f101112131415161718181819ff",
),
(r#"{_ "a": 1, "b": [_ 2, 3]}"#, "bf61610161629f0203ffff"),
(r#"["a", {_ "b": "c"}]"#, "826161bf61626163ff"),
(r#"{_ "Fun": true, "Amt": -2}"#, "bf6346756ef563416d7421ff"),
];
use tinycbor::Decoder;
#[test]
fn test() {
for (s, x) in VECTORS {
let h = const_hex::decode(x).unwrap();
let decoder = Decoder(&h);
assert_eq!(*s, format!("{}", decoder), "failed input: \"{}\"", x)
}
let mut ss = String::new();
let mut xx = String::new();
for (s, x) in VECTORS {
ss.push_str(s);
xx.push_str(x)
}
let h = const_hex::decode(xx).unwrap();
let decoder = Decoder(&h);
assert_eq!(ss, format!("{}", decoder))
}