use sml::parse;
#[test]
fn unclosed_block_must_error() {
let r = parse("a { x: 1");
assert!(r.is_err(), "未闭合块 {{ x: 1 应报错,实际 ok: {:?}", r);
}
#[test]
fn unclosed_top_array_must_error() {
let r = parse("[ 1 2 3");
assert!(r.is_err(), "未闭合数组应报错,实际 ok: {:?}", r);
}
#[test]
fn unclosed_nested_block_must_error() {
let r = parse("a {\n b { x: 1\n}");
assert!(r.is_err(), "嵌套未闭合块应报错,实际 ok: {:?}", r);
}
#[test]
fn stray_rbrace_top_must_error() {
let r = parse("name: John\n}");
assert!(r.is_err(), "顶层多余 }} 应报错,实际 ok: {:?}", r);
}
#[test]
fn stray_rbrack_top_must_error() {
let r = parse("name: John\n]");
assert!(r.is_err(), "顶层多余 ]] 应报错,实际 ok: {:?}", r);
}
#[test]
fn bracket_mismatch_in_block_must_error() {
let r = parse("a { x: 1 ]");
assert!(r.is_err(), "块内 }}/] 混用应报错,实际 ok: {:?}", r);
}
#[test]
fn bracket_mismatch_in_array_must_error() {
let r = parse("[ 1 2 3 }");
assert!(r.is_err(), "数组内 ]/}} 混用应报错,实际 ok: {:?}", r);
}
#[test]
fn well_formed_still_ok() {
let doc = "a {\n x: 1\n b { y: 2 }\n list: [ 1 2 3 ]\n}";
let r = parse(doc);
assert!(r.is_ok(), "合法嵌套文档应 ok,实际 err: {:?}", r);
}