@@ -70,6 +70,7 @@ fn push_pop() {
70
70
"A" => ProcessResult :: Changed ( vec ! [ "A.1" , "A.2" , "A.3" ] ) ,
71
71
"B" => ProcessResult :: Error ( "B is for broken" ) ,
72
72
"C" => ProcessResult :: Changed ( vec ! [ ] ) ,
73
+ "A.1" | "A.2" | "A.3" => ProcessResult :: Unchanged ,
73
74
_ => unreachable ! ( ) ,
74
75
}
75
76
} , |_| { } ) , DoCompleted :: Yes ) ;
@@ -94,6 +95,7 @@ fn push_pop() {
94
95
"A.2" => ProcessResult :: Unchanged ,
95
96
"A.3" => ProcessResult :: Changed ( vec ! [ "A.3.i" ] ) ,
96
97
"D" => ProcessResult :: Changed ( vec ! [ "D.1" , "D.2" ] ) ,
98
+ "A.3.i" | "D.1" | "D.2" => ProcessResult :: Unchanged ,
97
99
_ => unreachable ! ( ) ,
98
100
}
99
101
} , |_| { } ) , DoCompleted :: Yes ) ;
@@ -113,6 +115,7 @@ fn push_pop() {
113
115
"A.3.i" => ProcessResult :: Changed ( vec ! [ ] ) ,
114
116
"D.1" => ProcessResult :: Changed ( vec ! [ "D.1.i" ] ) ,
115
117
"D.2" => ProcessResult :: Changed ( vec ! [ "D.2.i" ] ) ,
118
+ "D.1.i" | "D.2.i" => ProcessResult :: Unchanged ,
116
119
_ => unreachable ! ( ) ,
117
120
}
118
121
} , |_| { } ) , DoCompleted :: Yes ) ;
@@ -161,35 +164,38 @@ fn success_in_grandchildren() {
161
164
forest. process_obligations ( & mut C ( |obligation| {
162
165
match * obligation {
163
166
"A" => ProcessResult :: Changed ( vec ! [ "A.1" , "A.2" , "A.3" ] ) ,
167
+ "A.1" => ProcessResult :: Changed ( vec ! [ ] ) ,
168
+ "A.2" => ProcessResult :: Changed ( vec ! [ "A.2.i" , "A.2.ii" ] ) ,
169
+ "A.3" => ProcessResult :: Changed ( vec ! [ ] ) ,
170
+ "A.2.i" | "A.2.ii" => ProcessResult :: Unchanged ,
164
171
_ => unreachable ! ( ) ,
165
172
}
166
173
} , |_| { } ) , DoCompleted :: Yes ) ;
167
- assert ! ( ok. unwrap( ) . is_empty( ) ) ;
174
+ let mut ok = ok. unwrap ( ) ;
175
+ ok. sort ( ) ;
176
+ assert_eq ! ( ok, vec![ "A.1" , "A.3" ] ) ;
168
177
assert ! ( err. is_empty( ) ) ;
169
178
170
179
let Outcome { completed : ok, errors : err, .. } =
171
180
forest. process_obligations ( & mut C ( |obligation| {
172
181
match * obligation {
173
- "A.1" => ProcessResult :: Changed ( vec ! [ ] ) ,
174
- "A.2" => ProcessResult :: Changed ( vec ! [ "A.2.i" , "A.2.ii" ] ) ,
175
- "A.3" => ProcessResult :: Changed ( vec ! [ ] ) ,
182
+ "A.2.i" => ProcessResult :: Unchanged ,
183
+ "A.2.ii" => ProcessResult :: Changed ( vec ! [ ] ) ,
176
184
_ => unreachable ! ( ) ,
177
185
}
178
186
} , |_| { } ) , DoCompleted :: Yes ) ;
179
- let mut ok = ok. unwrap ( ) ;
180
- ok. sort ( ) ;
181
- assert_eq ! ( ok, vec![ "A.1" , "A.3" ] ) ;
187
+ assert_eq ! ( ok. unwrap( ) , vec![ "A.2.ii" ] ) ;
182
188
assert ! ( err. is_empty( ) ) ;
183
189
184
190
let Outcome { completed : ok, errors : err, .. } =
185
191
forest. process_obligations ( & mut C ( |obligation| {
186
192
match * obligation {
187
193
"A.2.i" => ProcessResult :: Changed ( vec ! [ "A.2.i.a" ] ) ,
188
- "A.2.ii " => ProcessResult :: Changed ( vec ! [ ] ) ,
194
+ "A.2.i.a " => ProcessResult :: Unchanged ,
189
195
_ => unreachable ! ( ) ,
190
196
}
191
197
} , |_| { } ) , DoCompleted :: Yes ) ;
192
- assert_eq ! ( ok. unwrap( ) , vec! [ "A.2.ii" ] ) ;
198
+ assert ! ( ok. unwrap( ) . is_empty ( ) ) ;
193
199
assert ! ( err. is_empty( ) ) ;
194
200
195
201
let Outcome { completed : ok, errors : err, .. } =
@@ -222,6 +228,7 @@ fn to_errors_no_throw() {
222
228
forest. process_obligations ( & mut C ( |obligation| {
223
229
match * obligation {
224
230
"A" => ProcessResult :: Changed ( vec ! [ "A.1" , "A.2" , "A.3" ] ) ,
231
+ "A.1" | "A.2" | "A.3" => ProcessResult :: Unchanged ,
225
232
_ => unreachable ! ( ) ,
226
233
}
227
234
} , |_|{ } ) , DoCompleted :: Yes ) ;
@@ -243,6 +250,7 @@ fn diamond() {
243
250
forest. process_obligations ( & mut C ( |obligation| {
244
251
match * obligation {
245
252
"A" => ProcessResult :: Changed ( vec ! [ "A.1" , "A.2" ] ) ,
253
+ "A.1" | "A.2" => ProcessResult :: Unchanged ,
246
254
_ => unreachable ! ( ) ,
247
255
}
248
256
} , |_|{ } ) , DoCompleted :: Yes ) ;
@@ -254,6 +262,7 @@ fn diamond() {
254
262
match * obligation {
255
263
"A.1" => ProcessResult :: Changed ( vec ! [ "D" ] ) ,
256
264
"A.2" => ProcessResult :: Changed ( vec ! [ "D" ] ) ,
265
+ "D" => ProcessResult :: Unchanged ,
257
266
_ => unreachable ! ( ) ,
258
267
}
259
268
} , |_|{ } ) , DoCompleted :: Yes ) ;
@@ -282,6 +291,7 @@ fn diamond() {
282
291
forest. process_obligations ( & mut C ( |obligation| {
283
292
match * obligation {
284
293
"A'" => ProcessResult :: Changed ( vec ! [ "A'.1" , "A'.2" ] ) ,
294
+ "A'.1" | "A'.2" => ProcessResult :: Unchanged ,
285
295
_ => unreachable ! ( ) ,
286
296
}
287
297
} , |_|{ } ) , DoCompleted :: Yes ) ;
@@ -293,6 +303,7 @@ fn diamond() {
293
303
match * obligation {
294
304
"A'.1" => ProcessResult :: Changed ( vec ! [ "D'" , "A'" ] ) ,
295
305
"A'.2" => ProcessResult :: Changed ( vec ! [ "D'" ] ) ,
306
+ "D'" | "A'" => ProcessResult :: Unchanged ,
296
307
_ => unreachable ! ( ) ,
297
308
}
298
309
} , |_|{ } ) , DoCompleted :: Yes ) ;
@@ -370,6 +381,7 @@ fn orphan() {
370
381
"B" => ProcessResult :: Unchanged ,
371
382
"C1" => ProcessResult :: Changed ( vec ! [ ] ) ,
372
383
"C2" => ProcessResult :: Changed ( vec ! [ ] ) ,
384
+ "D" | "E" => ProcessResult :: Unchanged ,
373
385
_ => unreachable ! ( ) ,
374
386
}
375
387
} , |_|{ } ) , DoCompleted :: Yes ) ;
0 commit comments