mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-30 15:21:12 +00:00
some multi element list tests
This commit is contained in:
parent
544ac86343
commit
659f33c44b
2 changed files with 40 additions and 12 deletions
|
@ -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)?;
|
||||
|
|
|
@ -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(())
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue