///|
test "structured error exposes fields" {
let e = range_error(Syntax, InvalidRange, 3, "bad")
assert_true(e.stage() == Syntax)
assert_true(e.kind() == InvalidRange)
assert_int_eq(e.offset(), 3)
assert_str_eq(e.context(), "bad")
}
///|
test "error rendering includes offset" {
assert_str_eq(
range_error(Number, IntegerOverflow, 4, "large").to_string(),
"Number/IntegerOverflow at 4: large",
)
}
///|
test "stage names are stable" {
assert_str_eq(ContentRange.name(), "ContentRange")
assert_str_eq(Plan.name(), "Plan")
}
///|
test "kind names are stable" {
assert_str_eq(LastBeforeFirst.name(), "LastBeforeFirst")
assert_str_eq(LimitExceeded.name(), "LimitExceeded")
}