Grow scrolling into the random trees
Scrolling is the one thing in these trees that reads the pixel length of its box, and the one that hands its child a box longer than its own, so a warm layout under it has to be rebuilt where the rest can be carried over. A sixth of the nodes at each level is now a scroll over a subtree, on either axis. Four of a hundred seeds now grow nothing but wrappers, so `reshuffled` returns early where there is no span to shuffle: a case with nothing to do is not the same as a shuffle that had no effect, which is what the assertion below it is for. 50 tests, and the ignored sweep over 100 seeds and eight scenarios, 800 comparisons. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4178dfbff9
commit
cdec29351a
2 files changed
+17
No files matched your search
@@ -188,6 +188,11 @@ fn changed_size(seed: u64) {
|
||||
fn reshuffled(seed: u64, shuffle: Shuffle) {
|
||||
let mut warm = Harness::new((900, 1200));
|
||||
let mut grown = plant(&mut warm, seed, &Edits::default());
|
||||
// Some seeds grow nothing but wrappers, and a shuffle with no span to
|
||||
// shuffle is not the same thing as one that had no effect.
|
||||
if grown.spans.is_empty() {
|
||||
return;
|
||||
}
|
||||
let before: Vec<_> = grown.ids.iter().map(|id| warm.region(id)).collect();
|
||||
|
||||
let (spans, _held) = reshuffle(&mut warm, &mut grown, shuffle);
|
||||
|
||||
Reference in new issue
Block a user