summaryrefslogtreecommitdiff
path: root/support/texlab/crates/rename/src/tests.rs
blob: d931e92798a67e47ec58214d1ecc4503256206ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
use base_db::FeatureParams;
use rustc_hash::FxHashMap;

use crate::RenameParams;

fn check(input: &str) {
    let fixture = test_utils::fixture::Fixture::parse(input);

    let mut expected = FxHashMap::default();
    for spec in &fixture.documents {
        if !spec.ranges.is_empty() {
            let document = fixture.workspace.lookup(&spec.uri).unwrap();
            expected.insert(document, spec.ranges.clone());
        }
    }

    let (document, offset) = fixture
        .documents
        .iter()
        .find_map(|spec| Some((fixture.workspace.lookup(&spec.uri)?, spec.cursor?)))
        .unwrap();

    let inner = FeatureParams::new(&fixture.workspace, document);
    let params = RenameParams { inner, offset };
    let actual = crate::rename(&params);
    assert_eq!(actual.changes, expected);
}

#[test]
fn command() {
    check(
        r#"
%! foo.tex
\baz
  |
 ^^^
\include{bar.tex}

%! bar.tex
\baz
 ^^^
"#,
    )
}

#[test]
fn entry() {
    check(
        r#"
%! main.bib
@article{foo, bar = baz}
         |
         ^^^

%! main.tex
\addbibresource{main.bib}
\cite{foo}
      ^^^
"#,
    )
}

#[test]
fn citation() {
    check(
        r#"
%! main.bib
@article{foo, bar = baz}
         ^^^

%! main.tex
\addbibresource{main.bib}
\cite{foo}
       |
      ^^^
"#,
    )
}

#[test]
fn label() {
    check(
        r#"
%! foo.tex
\label{foo}\include{bar}
       |
       ^^^

%! bar.tex
\ref{foo}
     ^^^

%! baz.tex
\ref{foo}
"#,
    )
}