summaryrefslogtreecommitdiff
path: root/support/texlab/tests/integration/folding.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/tests/integration/folding.rs')
-rw-r--r--support/texlab/tests/integration/folding.rs126
1 files changed, 126 insertions, 0 deletions
diff --git a/support/texlab/tests/integration/folding.rs b/support/texlab/tests/integration/folding.rs
new file mode 100644
index 0000000000..3540e2c680
--- /dev/null
+++ b/support/texlab/tests/integration/folding.rs
@@ -0,0 +1,126 @@
+use indoc::indoc;
+use texlab::{
+ protocol::{FoldingRange, FoldingRangeKind},
+ test::{TestBedBuilder, PULL_CAPABILITIES},
+};
+
+#[tokio::test]
+async fn empty_latex_document() {
+ let mut test_bed = TestBedBuilder::new().file("main.tex", "").build().await;
+ test_bed.spawn();
+ test_bed.initialize(PULL_CAPABILITIES.clone()).await;
+ test_bed.open("main.tex").await;
+
+ let actual_foldings = test_bed.folding_range("main.tex").await.unwrap();
+
+ test_bed.shutdown().await;
+
+ assert!(actual_foldings.is_empty());
+}
+
+#[tokio::test]
+async fn empty_bibtex_document() {
+ let mut test_bed = TestBedBuilder::new().file("main.bib", "").build().await;
+ test_bed.spawn();
+ test_bed.initialize(PULL_CAPABILITIES.clone()).await;
+ test_bed.open("main.bib").await;
+
+ let actual_foldings = test_bed.folding_range("main.bib").await.unwrap();
+
+ test_bed.shutdown().await;
+
+ assert!(actual_foldings.is_empty());
+}
+
+#[tokio::test]
+async fn latex_sections_with_env() {
+ let mut test_bed = TestBedBuilder::new()
+ .file(
+ "main.tex",
+ indoc!(
+ r#"
+ \begin{document}
+ \section{Foo}
+ Foo
+ \section{Bar}
+ Bar
+ \end{document}
+ "#
+ ),
+ )
+ .build()
+ .await;
+ test_bed.spawn();
+ test_bed.initialize(PULL_CAPABILITIES.clone()).await;
+ test_bed.open("main.tex").await;
+
+ let actual_foldings = test_bed.folding_range("main.tex").await.unwrap();
+
+ test_bed.shutdown().await;
+
+ let expected_foldings = vec![
+ FoldingRange {
+ start_line: 0,
+ start_character: Some(16),
+ end_line: 5,
+ end_character: Some(0),
+ kind: Some(FoldingRangeKind::Region),
+ },
+ FoldingRange {
+ start_line: 1,
+ start_character: Some(13),
+ end_line: 2,
+ end_character: Some(0),
+ kind: Some(FoldingRangeKind::Region),
+ },
+ ];
+ assert_eq!(actual_foldings, expected_foldings);
+}
+
+#[tokio::test]
+async fn bibtex_entry() {
+ let mut test_bed = TestBedBuilder::new()
+ .file(
+ "main.bib",
+ indoc!(
+ r#"
+ @article{foo,
+ author = {Foo Bar},
+ title = {Baz Qux},
+ }
+ "#
+ ),
+ )
+ .build()
+ .await;
+ test_bed.spawn();
+ test_bed.initialize(PULL_CAPABILITIES.clone()).await;
+ test_bed.open("main.bib").await;
+
+ let actual_foldings = test_bed.folding_range("main.bib").await.unwrap();
+
+ test_bed.shutdown().await;
+
+ let expected_foldings = vec![FoldingRange {
+ start_line: 0,
+ start_character: Some(0),
+ end_line: 3,
+ end_character: Some(1),
+ kind: Some(FoldingRangeKind::Region),
+ }];
+ assert_eq!(actual_foldings, expected_foldings);
+}
+
+#[tokio::test]
+async fn unknown_file() {
+ let mut test_bed = TestBedBuilder::new().build().await;
+
+ test_bed.spawn();
+ test_bed.initialize(PULL_CAPABILITIES.clone()).await;
+
+ let actual_foldings = test_bed.folding_range("main.tex").await;
+
+ test_bed.shutdown().await;
+
+ assert_eq!(actual_foldings, None);
+}