1 use racer_testutils::*;
2
3 #[test]
completes_methods_for_for_arg()4 fn completes_methods_for_for_arg() {
5 let src = "
6 fn main() {
7 let v: Vec<String> = vec![];
8 for s in v {
9 s.ca~
10 }
11 }
12 ";
13 let got = get_only_completion(src, None);
14 assert_eq!(got.matchstr, "capacity");
15 }
16
17 #[test]
completes_methods_for_ref_for_arg()18 fn completes_methods_for_ref_for_arg() {
19 let src = "
20 #[derive(Copy, Clone)]
21 struct Usize(usize);
22 impl Usize { fn method(&self) {} }
23 fn main() {
24 let v: Vec<&Usize> = vec![];
25 for &u in v {
26 u.me~
27 }
28 }
29 ";
30 let got = get_only_completion(src, None);
31 assert_eq!(got.matchstr, "method");
32 }
33
34 #[test]
completes_methods_for_tupled_for_arg()35 fn completes_methods_for_tupled_for_arg() {
36 let src = "
37 fn main() {
38 let v: Vec<(String, usize)> = vec![];
39 for (s, i) in v {
40 s.ca~
41 }
42 }
43 ";
44 let got = get_only_completion(src, None);
45 assert_eq!(got.matchstr, "capacity");
46 }
47
48 #[test]
completes_methods_for_tupls_for_arg()49 fn completes_methods_for_tupls_for_arg() {
50 let src = "
51 fn main() {
52 struct St(String);
53 let v: Vec<St> = vec![];
54 for St(s) in v {
55 s.cap~
56 }
57 }
58 ";
59 let got = get_only_completion(src, None);
60 assert_eq!(got.matchstr, "capacity");
61 }
62
63 #[test]
completes_methods_for_complex_tupled_for_arg()64 fn completes_methods_for_complex_tupled_for_arg() {
65 let src = "
66 fn main() {
67 struct St(String);
68 let v: Vec<(String, St, usize)> = vec![];
69 for (s1, St(s2), i) in v {
70 s2.ca~
71 }
72 }
73 ";
74 let got = get_only_completion(src, None);
75 assert_eq!(got.matchstr, "capacity");
76 let src = "
77 #[derive(Copy, Clone)]
78 struct Usize(usize);
79 impl Usize { fn method(&self) {} }
80 fn main() {
81 let v: Vec<(String, &Usize)> = vec![];
82 for (s, &u) in v {
83 u.me~
84 }
85 }
86 ";
87 let got = get_only_completion(src, None);
88 assert_eq!(got.matchstr, "method");
89 }
90
91 // blocked by #946
92 #[test]
93 #[ignore]
completes_methods_for_struct_for_arg()94 fn completes_methods_for_struct_for_arg() {
95 let src = "
96 fn main() {
97 struct St {
98 name: String,
99 num: usize,
100 __guard: (),
101 }
102 let v: Vec<St> = vec![];
103 for St { name, num: n, .. } in v {
104 name.cap~
105 }
106 }
107 ";
108 let got = get_only_completion(src, None);
109 assert_eq!(got.matchstr, "capacity");
110 }
111