Unit Tests

This commit is contained in:
Jeremy A. Kolb 2018-09-24 10:48:13 -04:00
parent ff0a706a30
commit 4d52d004d5

View file

@ -6,11 +6,13 @@ use ra_syntax::{
algo::{walk, Direction, siblings}, algo::{walk, Direction, siblings},
}; };
#[derive(Debug, PartialEq, Eq)]
pub enum FoldKind { pub enum FoldKind {
Comment, Comment,
Imports, Imports,
} }
#[derive(Debug)]
pub struct Fold { pub struct Fold {
pub range: TextRange, pub range: TextRange,
pub kind: FoldKind, pub kind: FoldKind,
@ -84,3 +86,57 @@ fn contiguous_range_for<'a>(
None 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);
}
}