"A" => ProcessResult::Changed(vec!["A.1", "A.2", "A.3"]),
"B" => ProcessResult::Error("B is for broken"),
"C" => ProcessResult::Changed(vec![]),
+ "A.1" | "A.2" | "A.3" => ProcessResult::Unchanged,
_ => unreachable!(),
}
}, |_| {}), DoCompleted::Yes);
"A.2" => ProcessResult::Unchanged,
"A.3" => ProcessResult::Changed(vec!["A.3.i"]),
"D" => ProcessResult::Changed(vec!["D.1", "D.2"]),
+ "A.3.i" | "D.1" | "D.2" => ProcessResult::Unchanged,
_ => unreachable!(),
}
}, |_| {}), DoCompleted::Yes);
"A.3.i" => ProcessResult::Changed(vec![]),
"D.1" => ProcessResult::Changed(vec!["D.1.i"]),
"D.2" => ProcessResult::Changed(vec!["D.2.i"]),
+ "D.1.i" | "D.2.i" => ProcessResult::Unchanged,
_ => unreachable!(),
}
}, |_| {}), DoCompleted::Yes);
forest.process_obligations(&mut C(|obligation| {
match *obligation {
"A" => ProcessResult::Changed(vec!["A.1", "A.2", "A.3"]),
+ "A.1" => ProcessResult::Changed(vec![]),
+ "A.2" => ProcessResult::Changed(vec!["A.2.i", "A.2.ii"]),
+ "A.3" => ProcessResult::Changed(vec![]),
+ "A.2.i" | "A.2.ii" => ProcessResult::Unchanged,
_ => unreachable!(),
}
}, |_| {}), DoCompleted::Yes);
- assert!(ok.unwrap().is_empty());
+ let mut ok = ok.unwrap();
+ ok.sort();
+ assert_eq!(ok, vec!["A.1", "A.3"]);
assert!(err.is_empty());
let Outcome { completed: ok, errors: err, .. } =
forest.process_obligations(&mut C(|obligation| {
match *obligation {
- "A.1" => ProcessResult::Changed(vec![]),
- "A.2" => ProcessResult::Changed(vec!["A.2.i", "A.2.ii"]),
- "A.3" => ProcessResult::Changed(vec![]),
+ "A.2.i" => ProcessResult::Unchanged,
+ "A.2.ii" => ProcessResult::Changed(vec![]),
_ => unreachable!(),
}
}, |_| {}), DoCompleted::Yes);
- let mut ok = ok.unwrap();
- ok.sort();
- assert_eq!(ok, vec!["A.1", "A.3"]);
+ assert_eq!(ok.unwrap(), vec!["A.2.ii"]);
assert!(err.is_empty());
let Outcome { completed: ok, errors: err, .. } =
forest.process_obligations(&mut C(|obligation| {
match *obligation {
"A.2.i" => ProcessResult::Changed(vec!["A.2.i.a"]),
- "A.2.ii" => ProcessResult::Changed(vec![]),
+ "A.2.i.a" => ProcessResult::Unchanged,
_ => unreachable!(),
}
}, |_| {}), DoCompleted::Yes);
- assert_eq!(ok.unwrap(), vec!["A.2.ii"]);
+ assert!(ok.unwrap().is_empty());
assert!(err.is_empty());
let Outcome { completed: ok, errors: err, .. } =
forest.process_obligations(&mut C(|obligation| {
match *obligation {
"A" => ProcessResult::Changed(vec!["A.1", "A.2", "A.3"]),
+ "A.1" | "A.2" | "A.3" => ProcessResult::Unchanged,
_ => unreachable!(),
}
}, |_|{}), DoCompleted::Yes);
forest.process_obligations(&mut C(|obligation| {
match *obligation {
"A" => ProcessResult::Changed(vec!["A.1", "A.2"]),
+ "A.1" | "A.2" => ProcessResult::Unchanged,
_ => unreachable!(),
}
}, |_|{}), DoCompleted::Yes);
match *obligation {
"A.1" => ProcessResult::Changed(vec!["D"]),
"A.2" => ProcessResult::Changed(vec!["D"]),
+ "D" => ProcessResult::Unchanged,
_ => unreachable!(),
}
}, |_|{}), DoCompleted::Yes);
forest.process_obligations(&mut C(|obligation| {
match *obligation {
"A'" => ProcessResult::Changed(vec!["A'.1", "A'.2"]),
+ "A'.1" | "A'.2" => ProcessResult::Unchanged,
_ => unreachable!(),
}
}, |_|{}), DoCompleted::Yes);
match *obligation {
"A'.1" => ProcessResult::Changed(vec!["D'", "A'"]),
"A'.2" => ProcessResult::Changed(vec!["D'"]),
+ "D'" | "A'" => ProcessResult::Unchanged,
_ => unreachable!(),
}
}, |_|{}), DoCompleted::Yes);
"B" => ProcessResult::Unchanged,
"C1" => ProcessResult::Changed(vec![]),
"C2" => ProcessResult::Changed(vec![]),
+ "D" | "E" => ProcessResult::Unchanged,
_ => unreachable!(),
}
}, |_|{}), DoCompleted::Yes);