From 8d7e8a175e6067e4956a23cfd0c1baf003678734 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 20 Dec 2018 22:30:30 +0300 Subject: generalize folding tests By using xml-like tags, we will be able to test nested foldings. --- crates/ra_editor/src/folding_ranges.rs | 42 +++++++++++++++++----------------- 1 file changed, 21 insertions(+), 21 deletions(-) (limited to 'crates/ra_editor/src/folding_ranges.rs') diff --git a/crates/ra_editor/src/folding_ranges.rs b/crates/ra_editor/src/folding_ranges.rs index 2a8fa3cda..a4add8702 100644 --- a/crates/ra_editor/src/folding_ranges.rs +++ b/crates/ra_editor/src/folding_ranges.rs @@ -170,7 +170,7 @@ mod tests { use test_utils::extract_ranges; fn do_check(text: &str, fold_kinds: &[FoldKind]) { - let (ranges, text) = extract_ranges(text); + let (ranges, text) = extract_ranges(text, "fold"); let file = SourceFileNode::parse(&text); let folds = folding_ranges(&file); @@ -198,22 +198,22 @@ mod tests { #[test] fn test_fold_comments() { let text = r#" -<|>// Hello +// Hello // this is a multiline // comment -//<|> +// // But this is not fn main() { - <|>// We should + // We should // also // fold - // this one.<|> - <|>//! But this one is different - //! because it has another flavor<|> - <|>/* As does this - multiline comment */<|> + // this one. + //! But this one is different + //! because it has another flavor + /* As does this + multiline comment */ }"#; let fold_kinds = &[ @@ -228,11 +228,11 @@ fn main() { #[test] fn test_fold_imports() { let text = r#" -<|>use std::{ +use std::{ str, vec, io as iop -};<|> +}; fn main() { }"#; @@ -244,12 +244,12 @@ fn main() { #[test] fn test_fold_import_groups() { let text = r#" -<|>use std::str; +use std::str; use std::vec; -use std::io as iop;<|> +use std::io as iop; -<|>use std::mem; -use std::f64;<|> +use std::mem; +use std::f64; use std::collections::HashMap; // Some random comment @@ -265,17 +265,17 @@ fn main() { #[test] fn test_fold_import_and_groups() { let text = r#" -<|>use std::str; +use std::str; use std::vec; -use std::io as iop;<|> +use std::io as iop; -<|>use std::mem; -use std::f64;<|> +use std::mem; +use std::f64; -<|>use std::collections::{ +use std::collections::{ HashMap, VecDeque, -};<|> +}; // Some random comment fn main() { -- cgit v1.2.3 From 23b040962ff299feeef1f967bc2d5ba92b01c2bc Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 20 Dec 2018 22:13:16 +0300 Subject: fold curly blocks --- crates/ra_editor/src/folding_ranges.rs | 40 +++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 15 deletions(-) (limited to 'crates/ra_editor/src/folding_ranges.rs') diff --git a/crates/ra_editor/src/folding_ranges.rs b/crates/ra_editor/src/folding_ranges.rs index a4add8702..da542ecf0 100644 --- a/crates/ra_editor/src/folding_ranges.rs +++ b/crates/ra_editor/src/folding_ranges.rs @@ -10,6 +10,7 @@ use ra_syntax::{ pub enum FoldKind { Comment, Imports, + Block, } #[derive(Debug)] @@ -62,6 +63,8 @@ fn fold_kind(kind: SyntaxKind) -> Option { match kind { COMMENT => Some(FoldKind::Comment), USE_ITEM => Some(FoldKind::Imports), + NAMED_FIELD_DEF_LIST | FIELD_PAT_LIST | ITEM_LIST | EXTERN_ITEM_LIST | USE_TREE_LIST + | BLOCK | ENUM_VARIANT_LIST => Some(FoldKind::Block), _ => None, } } @@ -205,7 +208,7 @@ mod tests { // But this is not -fn main() { +fn main() { // We should // also // fold @@ -214,10 +217,11 @@ fn main() { //! because it has another flavor /* As does this multiline comment */ -}"#; +}"#; let fold_kinds = &[ FoldKind::Comment, + FoldKind::Block, FoldKind::Comment, FoldKind::Comment, FoldKind::Comment, @@ -228,16 +232,16 @@ fn main() { #[test] fn test_fold_imports() { let text = r#" -use std::{ +use std::{ str, vec, io as iop -}; +}; -fn main() { -}"#; +fn main() { +}"#; - let folds = &[FoldKind::Imports]; + let folds = &[FoldKind::Imports, FoldKind::Block, FoldKind::Block]; do_check(text, folds); } @@ -255,10 +259,10 @@ use std::collections::HashMap; // Some random comment use std::collections::VecDeque; -fn main() { -}"#; +fn main() { +}"#; - let folds = &[FoldKind::Imports, FoldKind::Imports]; + let folds = &[FoldKind::Imports, FoldKind::Imports, FoldKind::Block]; do_check(text, folds); } @@ -272,16 +276,22 @@ use std::io as iop; use std::mem; use std::f64; -use std::collections::{ +use std::collections::{ HashMap, VecDeque, -}; +}; // Some random comment -fn main() { -}"#; +fn main() { +}"#; - let folds = &[FoldKind::Imports, FoldKind::Imports, FoldKind::Imports]; + let folds = &[ + FoldKind::Imports, + FoldKind::Imports, + FoldKind::Imports, + FoldKind::Block, + FoldKind::Block, + ]; do_check(text, folds); } -- cgit v1.2.3