Add snapshot tests for roundtrip conversions
The example data is far from perfect, and there's a bunch of small stuff I want to tweak about the text format. But now the tests exist, which is a strict improvement from before!
This commit is contained in:
+7
-10
@@ -248,10 +248,7 @@ fn comment(input: &str) -> IResult<&str, ()> {
|
|||||||
|
|
||||||
/// Skip whitespace and comments.
|
/// Skip whitespace and comments.
|
||||||
fn ws(input: &str) -> IResult<&str, ()> {
|
fn ws(input: &str) -> IResult<&str, ()> {
|
||||||
value(
|
value((), many0(alt((value((), multispace1), comment)))).parse(input)
|
||||||
(),
|
|
||||||
many0(alt((value((), multispace1), comment))),
|
|
||||||
).parse(input)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parse a section header like [world], [board 0], [stat 1].
|
/// Parse a section header like [world], [board 0], [stat 1].
|
||||||
@@ -346,10 +343,7 @@ fn triple_quoted_string(input: &str) -> IResult<&str, String> {
|
|||||||
|
|
||||||
/// Parse an integer (possibly negative).
|
/// Parse an integer (possibly negative).
|
||||||
fn integer(input: &str) -> IResult<&str, i64> {
|
fn integer(input: &str) -> IResult<&str, i64> {
|
||||||
map_res(
|
map_res(recognize(pair(opt(char('-')), digit1)), |s: &str| s.parse()).parse(input)
|
||||||
recognize(pair(opt(char('-')), digit1)),
|
|
||||||
|s: &str| s.parse(),
|
|
||||||
).parse(input)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parse a boolean value.
|
/// Parse a boolean value.
|
||||||
@@ -412,7 +406,8 @@ fn parse_value(input: &str) -> IResult<&str, Value> {
|
|||||||
map(tuple2, |(a, b)| Value::Tuple2(a, b)),
|
map(tuple2, |(a, b)| Value::Tuple2(a, b)),
|
||||||
map(boolean, Value::Bool),
|
map(boolean, Value::Bool),
|
||||||
map(integer, Value::Int),
|
map(integer, Value::Int),
|
||||||
)).parse(input)
|
))
|
||||||
|
.parse(input)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parse a key = value pair.
|
/// Parse a key = value pair.
|
||||||
@@ -444,7 +439,9 @@ fn parse_hex_grid(input: &str) -> Result<(&str, Vec<u8>), ParseError> {
|
|||||||
// Parse 60 hex pairs
|
// Parse 60 hex pairs
|
||||||
for _ in 0..60 {
|
for _ in 0..60 {
|
||||||
if input.len() < 2 {
|
if input.len() < 2 {
|
||||||
return Err(ParseError::InvalidHex("unexpected end of hex data".to_string()));
|
return Err(ParseError::InvalidHex(
|
||||||
|
"unexpected end of hex data".to_string(),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
let hex_str = &input[..2];
|
let hex_str = &input[..2];
|
||||||
let byte = u8::from_str_radix(hex_str, 16)
|
let byte = u8::from_str_radix(hex_str, 16)
|
||||||
|
|||||||
Reference in New Issue
Block a user