Skip to content

Commit 65d3333

Browse files
authored
better debug for Peek (#86)
1 parent ad047bf commit 65d3333

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

crates/jiter/src/parse.rs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
use std::fmt;
2+
13
use crate::errors::{json_err, JsonResult, LinePosition};
24
use crate::number_decoder::AbstractNumberDecoder;
35
use crate::string_decoder::{AbstractStringDecoder, Tape};
46

5-
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
7+
#[derive(Copy, Clone, PartialEq, Eq)]
68
pub struct Peek(u8);
79

810
#[allow(non_upper_case_globals)] // while testing
@@ -18,6 +20,23 @@ impl Peek {
1820
pub const Object: Self = Self(b'{');
1921
}
2022

23+
impl fmt::Debug for Peek {
24+
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
25+
match self.0 {
26+
b'n' => write!(f, "Null"),
27+
b't' => write!(f, "True"),
28+
b'f' => write!(f, "False"),
29+
b'-' => write!(f, "Minus"),
30+
b'I' => write!(f, "Infinity"),
31+
b'N' => write!(f, "NaN"),
32+
b'"' => write!(f, "String"),
33+
b'[' => write!(f, "Array"),
34+
b'{' => write!(f, "Object"),
35+
_ => write!(f, "Peek({:?})", self.0 as char),
36+
}
37+
}
38+
}
39+
2140
impl Peek {
2241
pub const fn new(next: u8) -> Self {
2342
Self(next)

crates/jiter/tests/main.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1173,6 +1173,13 @@ fn jiter_wrong_types() {
11731173
expect_wrong_type!(next_float, JsonType::Float);
11741174
}
11751175

1176+
#[test]
1177+
fn peek_debug() {
1178+
assert_eq!(format!("{:?}", Peek::True), "True");
1179+
assert_eq!(format!("{:?}", Peek::False), "False");
1180+
assert_eq!(format!("{:?}", Peek::new(b'4')), "Peek('4')");
1181+
}
1182+
11761183
#[test]
11771184
fn jiter_invalid_numbers() {
11781185
let mut jiter = Jiter::new(b" -a", false);

0 commit comments

Comments
 (0)