Phase 5 step 2
This commit is contained in:
@@ -359,12 +359,12 @@ void TestRenderStateComposerBuildsFrameState()
|
||||
update.targetValue = JsonValue(0.6);
|
||||
liveState.ApplyOscUpdates({ update });
|
||||
|
||||
RenderStateCompositionInput input;
|
||||
LayeredRenderStateInput input;
|
||||
std::vector<RuntimeRenderState> baseLayerStates = { MakeLayerState() };
|
||||
input.baseLayerStates = &baseLayerStates;
|
||||
input.liveState = &liveState;
|
||||
input.allowLiveCommits = false;
|
||||
input.liveSmoothing = 0.0;
|
||||
input.committedLiveLayerStates = &baseLayerStates;
|
||||
input.transientAutomationOverlay = &liveState;
|
||||
input.allowTransientAutomationCommits = false;
|
||||
input.transientAutomationSmoothing = 0.0;
|
||||
|
||||
RenderStateComposer composer;
|
||||
RenderStateCompositionResult result = composer.BuildFrameState(input);
|
||||
@@ -382,6 +382,49 @@ void TestRenderStateComposerBuildsFrameState()
|
||||
"composer leaves base layer states unchanged");
|
||||
}
|
||||
|
||||
void TestRenderStateComposerUsesCommittedLayerOverBaseLayer()
|
||||
{
|
||||
std::vector<RuntimeRenderState> basePersistedLayerStates = { MakeLayerState() };
|
||||
std::vector<RuntimeRenderState> committedLiveLayerStates = { MakeLayerState() };
|
||||
committedLiveLayerStates[0].parameterValues["amount"].numberValues = { 0.4 };
|
||||
|
||||
LayeredRenderStateInput input;
|
||||
input.basePersistedLayerStates = &basePersistedLayerStates;
|
||||
input.committedLiveLayerStates = &committedLiveLayerStates;
|
||||
|
||||
RenderStateComposer composer;
|
||||
RenderStateCompositionResult result = composer.BuildFrameState(input);
|
||||
|
||||
const auto valueIt = result.layerStates[0].parameterValues.find("amount");
|
||||
Expect(valueIt != result.layerStates[0].parameterValues.end() &&
|
||||
!valueIt->second.numberValues.empty() &&
|
||||
std::fabs(valueIt->second.numberValues[0] - 0.4) < 0.0001,
|
||||
"committed live layer overrides base persisted layer");
|
||||
const auto baseValueIt = basePersistedLayerStates[0].parameterValues.find("amount");
|
||||
Expect(baseValueIt != basePersistedLayerStates[0].parameterValues.end() &&
|
||||
!baseValueIt->second.numberValues.empty() &&
|
||||
std::fabs(baseValueIt->second.numberValues[0] - 0.25) < 0.0001,
|
||||
"committed override leaves base persisted layer unchanged");
|
||||
}
|
||||
|
||||
void TestRenderStateComposerUsesBaseLayerWhenCommittedLayerMissing()
|
||||
{
|
||||
std::vector<RuntimeRenderState> basePersistedLayerStates = { MakeLayerState() };
|
||||
|
||||
LayeredRenderStateInput input;
|
||||
input.basePersistedLayerStates = &basePersistedLayerStates;
|
||||
|
||||
RenderStateComposer composer;
|
||||
RenderStateCompositionResult result = composer.BuildFrameState(input);
|
||||
|
||||
Expect(result.hasLayerStates, "composer can use base persisted layer states without committed layer states");
|
||||
const auto valueIt = result.layerStates[0].parameterValues.find("amount");
|
||||
Expect(valueIt != result.layerStates[0].parameterValues.end() &&
|
||||
!valueIt->second.numberValues.empty() &&
|
||||
std::fabs(valueIt->second.numberValues[0] - 0.25) < 0.0001,
|
||||
"base persisted value is used when no committed live value exists");
|
||||
}
|
||||
|
||||
void TestRenderStateComposerQueuesCommitRequestsWhenEnabled()
|
||||
{
|
||||
RuntimeLiveState liveState;
|
||||
@@ -393,13 +436,13 @@ void TestRenderStateComposerQueuesCommitRequestsWhenEnabled()
|
||||
liveState.ApplyOscUpdates({ update });
|
||||
|
||||
std::vector<RuntimeRenderState> baseLayerStates = { MakeLayerState() };
|
||||
RenderStateCompositionInput input;
|
||||
input.baseLayerStates = &baseLayerStates;
|
||||
input.liveState = &liveState;
|
||||
input.allowLiveCommits = true;
|
||||
input.collectLiveCommitRequests = true;
|
||||
input.liveSmoothing = 0.0;
|
||||
input.liveCommitDelay = std::chrono::milliseconds(0);
|
||||
LayeredRenderStateInput input;
|
||||
input.committedLiveLayerStates = &baseLayerStates;
|
||||
input.transientAutomationOverlay = &liveState;
|
||||
input.allowTransientAutomationCommits = true;
|
||||
input.collectTransientAutomationCommitRequests = true;
|
||||
input.transientAutomationSmoothing = 0.0;
|
||||
input.transientAutomationCommitDelay = std::chrono::milliseconds(0);
|
||||
input.now = std::chrono::steady_clock::now() + std::chrono::milliseconds(1);
|
||||
|
||||
RenderStateComposer composer;
|
||||
@@ -421,13 +464,13 @@ void TestRenderStateComposerSuppressesCommitCollection()
|
||||
liveState.ApplyOscUpdates({ update });
|
||||
|
||||
std::vector<RuntimeRenderState> baseLayerStates = { MakeLayerState() };
|
||||
RenderStateCompositionInput input;
|
||||
input.baseLayerStates = &baseLayerStates;
|
||||
input.liveState = &liveState;
|
||||
input.allowLiveCommits = true;
|
||||
input.collectLiveCommitRequests = false;
|
||||
input.liveSmoothing = 0.0;
|
||||
input.liveCommitDelay = std::chrono::milliseconds(0);
|
||||
LayeredRenderStateInput input;
|
||||
input.committedLiveLayerStates = &baseLayerStates;
|
||||
input.transientAutomationOverlay = &liveState;
|
||||
input.allowTransientAutomationCommits = true;
|
||||
input.collectTransientAutomationCommitRequests = false;
|
||||
input.transientAutomationSmoothing = 0.0;
|
||||
input.transientAutomationCommitDelay = std::chrono::milliseconds(0);
|
||||
input.now = std::chrono::steady_clock::now() + std::chrono::milliseconds(1);
|
||||
|
||||
RenderStateComposer composer;
|
||||
@@ -454,6 +497,8 @@ int main()
|
||||
TestRuntimeLiveStateSmoothingVectorSizeMismatchUsesTargetShape();
|
||||
TestRuntimeLiveStateTriggerOverlayIncrementsAndClears();
|
||||
TestRenderStateComposerBuildsFrameState();
|
||||
TestRenderStateComposerUsesCommittedLayerOverBaseLayer();
|
||||
TestRenderStateComposerUsesBaseLayerWhenCommittedLayerMissing();
|
||||
TestRenderStateComposerQueuesCommitRequestsWhenEnabled();
|
||||
TestRenderStateComposerSuppressesCommitCollection();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user