Re-land the robustness batch on main (#6): fillets running into an earlier round go to blend_corner (any radius) instead of the same-radius undo; the lip and drilled-hole regression tests move into tests/robustness.rs with the new command ids; measuring 5000 faces is checked for its counts, its time in an ignored perf test run alone
Part of #6 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RjGw4gA5ZvKrU8MQP6sBgT
This commit is contained in:
1 parent
0e9ddef4d8
commit
80f5a58806
5 files changed
+108
-79
No files matched your search
@@ -1361,8 +1361,8 @@ fn boolean_of_a_body_in_pieces() {
|
||||
assert!((v - (2000.0 - 2.0 * PI * 4.0 * 10.0)).abs() < 1.0, "{v}");
|
||||
}
|
||||
|
||||
/// Measuring a body of 5000 faces (a modelled thread is like that) stays fast and counts
|
||||
/// right: 0.8 s here, it took 13 s (a per-face recomputation of the body's size).
|
||||
/// Measuring a body of 5000 faces (a modelled thread is like that) counts right (it took 13 s,
|
||||
/// a per-face recomputation of the body's size; now under a second).
|
||||
#[test]
|
||||
fn measure_of_a_body_with_many_faces() {
|
||||
let n = 5000;
|
||||
@@ -1373,9 +1373,23 @@ fn measure_of_a_body_with_many_faces() {
|
||||
})
|
||||
.collect();
|
||||
let b = extrude(&Plane::XY, &[Region2 { outer: Loop2::polygon(&pts), holes: vec![] }], 0.0, 10.0).unwrap().pop().unwrap();
|
||||
let t = std::time::Instant::now();
|
||||
let m = measure(&b).unwrap();
|
||||
// (A loaded build machine runs slower; the bound is loose.)
|
||||
assert!(t.elapsed().as_secs_f64() < 5.0, "{:?}", t.elapsed());
|
||||
assert_eq!((m.merged.faces, m.merged.edges, m.merged.vertices), (n + 2, 3 * n, 2 * n), "{:?}", m.merged);
|
||||
}
|
||||
|
||||
/// The time it takes (run alone, the suite's other tests share the machine):
|
||||
/// `cargo test --release -p solvecraft-kernel perf_measure_5000_faces -- --ignored`.
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn perf_measure_5000_faces() {
|
||||
let pts: Vec<Vec2> = (0..5000)
|
||||
.map(|i| {
|
||||
let a = std::f64::consts::TAU * i as f64 / 5000.0;
|
||||
Vec2::new(20.0 * a.cos(), 20.0 * a.sin())
|
||||
})
|
||||
.collect();
|
||||
let b = extrude(&Plane::XY, &[Region2 { outer: Loop2::polygon(&pts), holes: vec![] }], 0.0, 10.0).unwrap().pop().unwrap();
|
||||
let t = std::time::Instant::now();
|
||||
measure(&b).unwrap();
|
||||
assert!(t.elapsed().as_secs_f64() < 1.5, "{:?}", t.elapsed());
|
||||
}
|
||||
Reference in new issue
Block a user