some multi element list tests

This commit is contained in:
Anton-4 2021-07-02 19:08:05 +02:00
parent 544ac86343
commit 659f33c44b
2 changed files with 40 additions and 12 deletions

View file

@ -870,7 +870,11 @@ pub mod test_ed_update {
let mut ed_model = ed_model_from_dsl(&code_str, pre_lines, &mut model_refs)?;
for input_char in new_char_seq.chars() {
ed_res_to_res(handle_new_char(&input_char, &mut ed_model))?;
if input_char == '➔' {
ed_model.simple_move_carets_right(1);
} else {
ed_res_to_res(handle_new_char(&input_char, &mut ed_model))?;
}
}
let post_lines = ui_res_to_res(ed_model_to_dsl(&ed_model))?;
@ -1520,7 +1524,7 @@ pub mod test_ed_update {
}
#[test]
fn test_list() -> Result<(), String> {
fn test_single_elt_list() -> Result<(), String> {
assert_insert(&[""], &["[ ┃ ]"], '[')?;
assert_insert_seq(&[""], &["[ 0┃ ]"], "[0")?;
@ -1555,6 +1559,30 @@ pub mod test_ed_update {
Ok(())
}
#[test]
fn test_multi_elt_list() -> Result<(), String> {
assert_insert_seq(&[""], &["[ 0, 1┃ ]"], "[0,1")?;
assert_insert_seq(&[""], &["[ 987, 6543, 210┃ ]"], "[987,6543,210")?;
assert_insert_seq(
&[""],
&["[ \"a\", \"bcd\", \"EFGH┃\" ]"],
"[\"a➔,\"bcd➔,\"EFGH",
)?;
assert_insert_seq(
&[""],
&["[ { a: 1 }, { b: 23 }, { c: 456┃ } ]"],
"[{a:1➔➔,{b:23➔➔,{c:456",
)?;
assert_insert_seq(&[""], &["[ [ 1 ], [ 23 ], [ 456┃ ] ]"], "[[1➔➔,[23➔➔,[456")?;
// TODO issue #1448: assert_insert_seq(&["┃"], &["[ 0, ┃ ]"], "[0,\"")?;
// assert_insert_seq(&["┃"], &["[ [ [ 0 ], [ 1 ] ], ┃"], "[[[0➔➔,[1➔➔➔➔,[[\"")?
Ok(())
}
#[test]
fn test_ignore_list() -> Result<(), String> {
assert_insert_seq_ignore(&["┃[ ]"], IGNORE_CHARS)?;

View file

@ -136,22 +136,22 @@ pub fn add_blank_child(ed_model: &mut EdModel) -> EdResult<InputOutcome> {
let list_ast_node = ed_model.module.env.pool.get(list_ast_node_id);
match list_ast_node {
Expr2::List {
elem_var,
elems,
} => {
Expr2::List { elem_var, elems } => {
let mut new_elems: Vec<ExprId> =
elems.iter(ed_model.module.env.pool).copied().collect();
new_elems.push(blank_elt_id);
let new_list_node =
Expr2::List {
elem_var: *elem_var,
elems: PoolVec::new(new_elems.into_iter(), ed_model.module.env.pool),
};
let new_list_node = Expr2::List {
elem_var: *elem_var,
elems: PoolVec::new(new_elems.into_iter(), ed_model.module.env.pool),
};
ed_model.module.env.pool.set(list_ast_node_id, new_list_node);
ed_model
.module
.env
.pool
.set(list_ast_node_id, new_list_node);
Ok(())
}