fix: Panic when using `remove` with bad positional index

This commit is contained in:
jaxter184 2023-04-19 20:17:44 -05:00 committed by Kat Marchán
parent be0dc1708d
commit f527490d81
1 changed files with 15 additions and 4 deletions

View File

@ -365,7 +365,10 @@ impl KdlNode {
current_idx += 1;
}
}
None
panic!(
"removal index (is {}) should be < number of index entries (is {})",
idx, current_idx
);
}
}
}
@ -698,14 +701,22 @@ mod test {
node.get("keyword").is_some(),
"keyword property should not be removed by index removal"
);
node.remove(1);
assert_eq!(node.entries().len(), 2, "index removal should not succeed");
node.remove("not an existing keyword");
assert_eq!(node.entries().len(), 2, "key removal should not succeed");
node.remove("keyword");
assert_eq!(node.entries().len(), 1, "key removal should succeed");
node.remove(0);
assert_eq!(node.entries().len(), 0, "index removal should suceed");
node.remove(0); // should not panic
}
#[test]
#[should_panic(expected = "removal index (is 0) should be < number of index entries (is 0)")]
fn remove_panic() {
let mut node = KdlNode::new("foo");
node.push("pos0");
node.insert("keyword", 6.0);
node.remove(0);
assert_eq!(node.entries().len(), 1, "key removal should succeed");
node.remove(0); // should panic here
}
}