@@ -67,93 +67,96 @@ fn cbor_bytes_sz(bytes: Vec<u8>, sz: cbor_event::StringLenSz) -> Vec<u8> {
6767 buf.finalize()
6868}
6969
70- fn print_cbor_types(obj_name: &str, vec: Vec<u8>) {
71- use cbor_event::Type;
72- let mut raw = cbor_event::de::Deserializer::from(vec);
73- let mut lens = Vec::new();
74- let consume_elem = |lens: &mut Vec<cbor_event::LenSz>| {
75- if let Some(len) = lens.last_mut() {
76- if let cbor_event::LenSz::Len(n, _) = len {
77- *n -= 1;
70+ #[cfg(test)]
71+ mod tests {
72+ fn print_cbor_types(obj_name: &str, vec: Vec<u8>) {
73+ use cbor_event::Type;
74+ let mut raw = cbor_event::de::Deserializer::from(vec);
75+ let mut lens = Vec::new();
76+ let consume_elem = |lens: &mut Vec<cbor_event::LenSz>| {
77+ if let Some(len) = lens.last_mut() {
78+ if let cbor_event::LenSz::Len(n, _) = len {
79+ *n -= 1;
80+ }
7881 }
79- }
80- };
81- let reduce_depth = |lens: &mut Vec<cbor_event::LenSz>| {
82- while let Some(cbor_event::LenSz::Len(0, _)) = lens.last() {
83- lens.pop();
84- println!("{}}}", "\t".repeat(lens.len()));
85- }
86- };
87- println!("{} = {{", obj_name);
88- loop {
89- print!("{}", "\t".repeat(lens.len()));
90- match raw.cbor_type() {
91- Err(_) => break,
92- Ok(Type::UnsignedInteger) => {
93- let (x, sz) = raw.unsigned_integer_sz().unwrap();
94- println!("UINT({}, {:?})", x, sz);
95- consume_elem(&mut lens);
96- reduce_depth(&mut lens);
97- },
98- Ok(Type::NegativeInteger) => {
99- let (x, sz) = raw.negative_integer_sz().unwrap();
100- println!("NINT({}, {:?})", x, sz);
101- consume_elem(&mut lens);
102- reduce_depth(&mut lens);
103- },
104- Ok(Type::Bytes) => {
105- let (x, sz) = raw.bytes_sz().unwrap();
106- println!("BYTES({:?}, {:?})", x, sz);
107- consume_elem(&mut lens);
108- reduce_depth(&mut lens);
109- },
110- Ok(Type::Text) => {
111- let (x, sz) = raw.text_sz().unwrap();
112- println!("TEXT(\"{}\", {:?})", x, sz);
113- consume_elem(&mut lens);
114- reduce_depth(&mut lens);
115- },
116- Ok(Type::Array) => {
117- let len = raw.array_sz().unwrap();
118- println!("ARRAY({:?}) {{", len);
119- consume_elem(&mut lens);
120- lens.push(len);
121- if let cbor_event::LenSz::Len(0, _sz) = len {
82+ };
83+ let reduce_depth = |lens: &mut Vec<cbor_event::LenSz>| {
84+ while let Some(cbor_event::LenSz::Len(0, _)) = lens.last() {
85+ lens.pop();
86+ println!("{}}}", "\t".repeat(lens.len()));
87+ }
88+ };
89+ println!("{} = {{", obj_name);
90+ loop {
91+ print!("{}", "\t".repeat(lens.len()));
92+ match raw.cbor_type() {
93+ Err(_) => break,
94+ Ok(Type::UnsignedInteger) => {
95+ let (x, sz) = raw.unsigned_integer_sz().unwrap();
96+ println!("UINT({}, {:?})", x, sz);
97+ consume_elem(&mut lens);
12298 reduce_depth(&mut lens);
123- }
124- },
125- Ok(Type::Map) => {
126- let len = raw.map_sz().unwrap();
127- println!("MAP({:?}) {{", len);
128- consume_elem(&mut lens);
129- lens.push(match len {
130- cbor_event::LenSz::Len(n, sz) => cbor_event::LenSz::Len(2 * n, sz),
131- cbor_event::LenSz::Indefinite => cbor_event::LenSz::Indefinite,
132- });
133- if let cbor_event::LenSz::Len(0, _sz) = len {
99+ },
100+ Ok(Type::NegativeInteger) => {
101+ let (x, sz) = raw.negative_integer_sz().unwrap();
102+ println!("NINT({}, {:?})", x, sz);
103+ consume_elem(&mut lens);
134104 reduce_depth(&mut lens);
135- }
136- },
137- Ok(Type::Tag) => {
138- let (tag, sz) = raw.tag_sz().unwrap();
139- println!("TAG({}, {:?})", tag, sz);
140- },
141- Ok(Type::Special) => {
142- let special = raw.special().unwrap();
143- println!("SPECIAL({:?})", special);
144- if special == cbor_event::Special::Break {
145- if let Some(cbor_event::LenSz::Indefinite) = lens.last() {
146- lens.pop();
105+ },
106+ Ok(Type::Bytes) => {
107+ let (x, sz) = raw.bytes_sz().unwrap();
108+ println!("BYTES({:?}, {:?})", x, sz);
109+ consume_elem(&mut lens);
110+ reduce_depth(&mut lens);
111+ },
112+ Ok(Type::Text) => {
113+ let (x, sz) = raw.text_sz().unwrap();
114+ println!("TEXT(\"{}\", {:?})", x, sz);
115+ consume_elem(&mut lens);
116+ reduce_depth(&mut lens);
117+ },
118+ Ok(Type::Array) => {
119+ let len = raw.array_sz().unwrap();
120+ println!("ARRAY({:?}) {{", len);
121+ consume_elem(&mut lens);
122+ lens.push(len);
123+ if let cbor_event::LenSz::Len(0, _sz) = len {
147124 reduce_depth(&mut lens);
148- } else {
149- panic!("unexpected break");
150125 }
151- } else {
126+ },
127+ Ok(Type::Map) => {
128+ let len = raw.map_sz().unwrap();
129+ println!("MAP({:?}) {{", len);
152130 consume_elem(&mut lens);
153- reduce_depth(&mut lens);
154- }
155- },
131+ lens.push(match len {
132+ cbor_event::LenSz::Len(n, sz) => cbor_event::LenSz::Len(2 * n, sz),
133+ cbor_event::LenSz::Indefinite => cbor_event::LenSz::Indefinite,
134+ });
135+ if let cbor_event::LenSz::Len(0, _sz) = len {
136+ reduce_depth(&mut lens);
137+ }
138+ },
139+ Ok(Type::Tag) => {
140+ let (tag, sz) = raw.tag_sz().unwrap();
141+ println!("TAG({}, {:?})", tag, sz);
142+ },
143+ Ok(Type::Special) => {
144+ let special = raw.special().unwrap();
145+ println!("SPECIAL({:?})", special);
146+ if special == cbor_event::Special::Break {
147+ if let Some(cbor_event::LenSz::Indefinite) = lens.last() {
148+ lens.pop();
149+ reduce_depth(&mut lens);
150+ } else {
151+ panic!("unexpected break");
152+ }
153+ } else {
154+ consume_elem(&mut lens);
155+ reduce_depth(&mut lens);
156+ }
157+ },
158+ }
156159 }
160+ println!("}}");
157161 }
158- println!("}}");
159162}
0 commit comments