@@ -30,3 +30,79 @@ pub(crate) fn flip_trait_bound(mut ctx: AssistCtx<impl HirDatabase>) -> Option<A
30
30
31
31
ctx. build ( )
32
32
}
33
+
34
+ #[ cfg( test) ]
35
+ mod tests {
36
+ use super :: * ;
37
+
38
+ use crate :: helpers:: { check_assist, check_assist_not_applicable, check_assist_target} ;
39
+
40
+ #[ test]
41
+ fn flip_trait_bound_assist_available ( ) {
42
+ check_assist_target ( flip_trait_bound, "struct S<T> where T: A <|>+ B + C { }" , "+" )
43
+ }
44
+
45
+ #[ test]
46
+ fn flip_trait_bound_not_applicable_for_single_trait_bound ( ) {
47
+ check_assist_not_applicable ( flip_trait_bound, "struct S<T> where T: <|>A { }" )
48
+ }
49
+
50
+ #[ test]
51
+ fn flip_trait_bound_works_for_struct ( ) {
52
+ check_assist (
53
+ flip_trait_bound,
54
+ "struct S<T> where T: A <|>+ B { }" ,
55
+ "struct S<T> where T: B <|>+ A { }" ,
56
+ )
57
+ }
58
+
59
+ #[ test]
60
+ fn flip_trait_bound_works_for_trait_impl ( ) {
61
+ check_assist (
62
+ flip_trait_bound,
63
+ "impl X for S<T> where T: A +<|> B { }" ,
64
+ "impl X for S<T> where T: B +<|> A { }" ,
65
+ )
66
+ }
67
+
68
+ #[ test]
69
+ fn flip_trait_bound_works_for_fn ( ) {
70
+ check_assist ( flip_trait_bound, "fn f<T: A <|>+ B>(t: T) { }" , "fn f<T: B <|>+ A>(t: T) { }" )
71
+ }
72
+
73
+ #[ test]
74
+ fn flip_trait_bound_works_for_fn_where_clause ( ) {
75
+ check_assist (
76
+ flip_trait_bound,
77
+ "fn f<T>(t: T) where T: A +<|> B { }" ,
78
+ "fn f<T>(t: T) where T: B +<|> A { }" ,
79
+ )
80
+ }
81
+
82
+ #[ test]
83
+ fn flip_trait_bound_works_for_lifetime ( ) {
84
+ check_assist (
85
+ flip_trait_bound,
86
+ "fn f<T>(t: T) where T: A <|>+ 'static { }" ,
87
+ "fn f<T>(t: T) where T: 'static <|>+ A { }" ,
88
+ )
89
+ }
90
+
91
+ #[ test]
92
+ fn flip_trait_bound_works_for_complex_bounds ( ) {
93
+ check_assist (
94
+ flip_trait_bound,
95
+ "struct S<T> where T: A<T> <|>+ b_mod::B<T> + C<T> { }" ,
96
+ "struct S<T> where T: b_mod::B<T> <|>+ A<T> + C<T> { }" ,
97
+ )
98
+ }
99
+
100
+ #[ test]
101
+ fn flip_trait_bound_works_for_long_bounds ( ) {
102
+ check_assist (
103
+ flip_trait_bound,
104
+ "struct S<T> where T: A + B + C + D + E + F +<|> G + H + I + J { }" ,
105
+ "struct S<T> where T: A + B + C + D + E + G +<|> F + H + I + J { }" ,
106
+ )
107
+ }
108
+ }
0 commit comments