From 659f33c44b3bacd4f800cd56d5362eb8261a67cf Mon Sep 17 00:00:00 2001 From: Anton-4 <17049058+Anton-4@users.noreply.github.com> Date: Fri, 2 Jul 2021 19:08:05 +0200 Subject: [PATCH] some multi element list tests --- editor/src/editor/mvc/ed_update.rs | 32 ++++++++++++++++++++++++++-- editor/src/editor/mvc/list_update.rs | 20 ++++++++--------- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/editor/src/editor/mvc/ed_update.rs b/editor/src/editor/mvc/ed_update.rs index 4ea9faac9d..a23565550a 100644 --- a/editor/src/editor/mvc/ed_update.rs +++ b/editor/src/editor/mvc/ed_update.rs @@ -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)?; diff --git a/editor/src/editor/mvc/list_update.rs b/editor/src/editor/mvc/list_update.rs index 421a193c17..67ed064e0a 100644 --- a/editor/src/editor/mvc/list_update.rs +++ b/editor/src/editor/mvc/list_update.rs @@ -136,22 +136,22 @@ pub fn add_blank_child(ed_model: &mut EdModel) -> EdResult { 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 = 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(()) }