fix: checkpoint STEP-097 A1 renderer correctness

This commit is contained in:
tei
2026-09-25 22:26:33 +09:00
parent 720d309364
commit e67e4961b5
14 changed files with 295 additions and 63 deletions

View File

@@ -830,6 +830,33 @@ TEST(RenderSegmentDiagnostics, VisibilityChangesMetadataButNotTopologyRevision)
EXPECT_EQ(hidden.segments[1].beginIndex, 2);
}
TEST(RenderSegmentDiagnostics, OldCacheReleaseCannotChargeReplacementAtSameIndex) {
RetainedUnderlayRuntimeState state;
RenderSegmentPlan configured;
configured.segments = {{RenderSegmentStrategy::Retained, std::nullopt},
{RenderSegmentStrategy::Continuous, "weather"}};
ASSERT_TRUE(state.setRenderSegmentPlan(configured));
const auto oldPlan = resolveRenderSegmentPlan(state.renderSegmentPlanConfig(), segmentLayerIds(), true);
state.recordRenderSegmentResolution(oldPlan, {});
const auto oldRevision = state.renderSegmentSnapshot().topologyRevision;
configured.segments = {{RenderSegmentStrategy::Retained, std::nullopt},
{RenderSegmentStrategy::Continuous, "land"}};
ASSERT_TRUE(state.setRenderSegmentPlan(configured));
const auto newPlan = resolveRenderSegmentPlan(state.renderSegmentPlanConfig(), segmentLayerIds(), true);
state.recordRenderSegmentResolution(newPlan, {});
const auto newRevision = state.renderSegmentSnapshot().topologyRevision;
ASSERT_NE(oldRevision, newRevision);
state.recordSegmentResourceRelease(0, oldRevision);
auto snapshot = state.renderSegmentSnapshot();
ASSERT_TRUE(snapshot.segments[0].cache);
EXPECT_EQ(snapshot.segments[0].cache->resourceRelease, 0u);
state.recordSegmentResourceRelease(0, newRevision);
snapshot = state.renderSegmentSnapshot();
EXPECT_EQ(snapshot.segments[0].cache->resourceRelease, 1u);
}
TEST(RenderSegmentDiagnostics, CacheOffKeepsResolvedTopology) {
RetainedUnderlayRuntimeState state;
RenderSegmentPlan configured;