mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-30 23:31: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,8 +870,12 @@ pub mod test_ed_update {
|
||||||
let mut ed_model = ed_model_from_dsl(&code_str, pre_lines, &mut model_refs)?;
|
let mut ed_model = ed_model_from_dsl(&code_str, pre_lines, &mut model_refs)?;
|
||||||
|
|
||||||
for input_char in new_char_seq.chars() {
|
for input_char in new_char_seq.chars() {
|
||||||
|
if input_char == '➔' {
|
||||||
|
ed_model.simple_move_carets_right(1);
|
||||||
|
} else {
|
||||||
ed_res_to_res(handle_new_char(&input_char, &mut ed_model))?;
|
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))?;
|
let post_lines = ui_res_to_res(ed_model_to_dsl(&ed_model))?;
|
||||||
|
|
||||||
|
@ -1520,7 +1524,7 @@ pub mod test_ed_update {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_list() -> Result<(), String> {
|
fn test_single_elt_list() -> Result<(), String> {
|
||||||
assert_insert(&["┃"], &["[ ┃ ]"], '[')?;
|
assert_insert(&["┃"], &["[ ┃ ]"], '[')?;
|
||||||
|
|
||||||
assert_insert_seq(&["┃"], &["[ 0┃ ]"], "[0")?;
|
assert_insert_seq(&["┃"], &["[ 0┃ ]"], "[0")?;
|
||||||
|
@ -1555,6 +1559,30 @@ pub mod test_ed_update {
|
||||||
Ok(())
|
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]
|
#[test]
|
||||||
fn test_ignore_list() -> Result<(), String> {
|
fn test_ignore_list() -> Result<(), String> {
|
||||||
assert_insert_seq_ignore(&["┃[ ]"], IGNORE_CHARS)?;
|
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);
|
let list_ast_node = ed_model.module.env.pool.get(list_ast_node_id);
|
||||||
|
|
||||||
match list_ast_node {
|
match list_ast_node {
|
||||||
Expr2::List {
|
Expr2::List { elem_var, elems } => {
|
||||||
elem_var,
|
|
||||||
elems,
|
|
||||||
} => {
|
|
||||||
let mut new_elems: Vec<ExprId> =
|
let mut new_elems: Vec<ExprId> =
|
||||||
elems.iter(ed_model.module.env.pool).copied().collect();
|
elems.iter(ed_model.module.env.pool).copied().collect();
|
||||||
|
|
||||||
new_elems.push(blank_elt_id);
|
new_elems.push(blank_elt_id);
|
||||||
|
|
||||||
let new_list_node =
|
let new_list_node = Expr2::List {
|
||||||
Expr2::List {
|
|
||||||
elem_var: *elem_var,
|
elem_var: *elem_var,
|
||||||
elems: PoolVec::new(new_elems.into_iter(), ed_model.module.env.pool),
|
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(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue