on master help sign in
Test indentation level calculation (#6281)
1126af5Jonatan Pettersson
helix-core/tests/indent.rs+34−1
@@ -1,5 +1,5 @@
1use helix_core::{
1use helix_core::{
2− indent::{treesitter_indent_for_pos, IndentStyle},
2+ indent::{indent_level_for_line, treesitter_indent_for_pos, IndentStyle},
3 syntax::Loader,
3 syntax::Loader,
4 Syntax,
4 Syntax,
5};
5};
@@ -17,6 +17,39 @@ fn test_treesitter_indent_rust_2() {
17 // test_treesitter_indent("commands.rs", "source.rust");
17 // test_treesitter_indent("commands.rs", "source.rust");
18}
18}
19
19
20+#[test]
21+fn test_indent_level_for_line_with_spaces() {
22+ let tab_width: usize = 4;
23+ let indent_width: usize = 4;
24+
25+ let line = ropey::Rope::from_str(" Indented with 8 spaces");
26+
27+ let indent_level = indent_level_for_line(line.slice(0..), tab_width, indent_width);
28+ assert_eq!(indent_level, 2)
29+}
30+
31+#[test]
32+fn test_indent_level_for_line_with_tabs() {
33+ let tab_width: usize = 4;
34+ let indent_width: usize = 4;
35+
36+ let line = ropey::Rope::from_str("\t\tIndented with 2 tabs");
37+
38+ let indent_level = indent_level_for_line(line.slice(0..), tab_width, indent_width);
39+ assert_eq!(indent_level, 2)
40+}
41+
42+#[test]
43+fn test_indent_level_for_line_with_spaces_and_tabs() {
44+ let tab_width: usize = 4;
45+ let indent_width: usize = 4;
46+
47+ let line = ropey::Rope::from_str(" \t \tIndented with mix of spaces and tabs");
48+
49+ let indent_level = indent_level_for_line(line.slice(0..), tab_width, indent_width);
50+ assert_eq!(indent_level, 2)
51+}
52+
20fn test_treesitter_indent(file_name: &str, lang_scope: &str) {
53fn test_treesitter_indent(file_name: &str, lang_scope: &str) {
21 let mut test_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
54 let mut test_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
22 test_dir.push("tests/data/indent");
55 test_dir.push("tests/data/indent");