From 4d52d004d58ff8d0479220d22bd0adfcfd7ffa9f Mon Sep 17 00:00:00 2001 From: "Jeremy A. Kolb" Date: Mon, 24 Sep 2018 10:48:13 -0400 Subject: Unit Tests --- crates/ra_editor/src/folding_ranges.rs | 56 ++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'crates/ra_editor/src') diff --git a/crates/ra_editor/src/folding_ranges.rs b/crates/ra_editor/src/folding_ranges.rs index 4518e8d24..817da28d1 100644 --- a/crates/ra_editor/src/folding_ranges.rs +++ b/crates/ra_editor/src/folding_ranges.rs @@ -6,11 +6,13 @@ use ra_syntax::{ algo::{walk, Direction, siblings}, }; +#[derive(Debug, PartialEq, Eq)] pub enum FoldKind { Comment, Imports, } +#[derive(Debug)] pub struct Fold { pub range: TextRange, pub kind: FoldKind, @@ -83,4 +85,58 @@ fn contiguous_range_for<'a>( } else { None } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_fold_comments() { + let text = r#" +// Hello +// this is a multiline +// comment +// + +// But this is not + +fn main() { + // We should + // also + // fold + // this one. +}"#; + + let file = File::parse(&text); + let folds = folding_ranges(&file); + assert_eq!(folds.len(), 2); + assert_eq!(folds[0].range.start(), 1.into()); + assert_eq!(folds[0].range.end(), 46.into()); + assert_eq!(folds[0].kind, FoldKind::Comment); + + assert_eq!(folds[1].range.start(), 84.into()); + assert_eq!(folds[1].range.end(), 137.into()); + assert_eq!(folds[1].kind, FoldKind::Comment); + } + + #[test] + fn test_fold_imports() { + let text = r#" +use std::str; +use std::vec; +use std::io as iop; + +fn main() { +}"#; + + let file = File::parse(&text); + let folds = folding_ranges(&file); + assert_eq!(folds.len(), 1); + assert_eq!(folds[0].range.start(), 1.into()); + assert_eq!(folds[0].range.end(), 48.into()); + assert_eq!(folds[0].kind, FoldKind::Imports); + } + + } \ No newline at end of file -- cgit v1.2.3