runtime read of json layer state
This commit is contained in:
@@ -159,6 +159,57 @@ void TestAddAndRemoveLayers()
|
||||
std::filesystem::remove_all(root);
|
||||
}
|
||||
|
||||
void TestInitializeFromRuntimeStateRestoresLayerStack()
|
||||
{
|
||||
std::filesystem::path root;
|
||||
RenderCadenceCompositor::SupportedShaderCatalog catalog = MakeCatalog(root);
|
||||
|
||||
JsonValue runtimeState;
|
||||
std::string error;
|
||||
Expect(ParseJson(R"({
|
||||
"layers": [
|
||||
{
|
||||
"id": "layer-31",
|
||||
"shaderId": "solid",
|
||||
"bypass": true,
|
||||
"parameterValues": {
|
||||
"gain": 0.75,
|
||||
"drop": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "layer-32",
|
||||
"shaderId": "missing",
|
||||
"parameterValues": {
|
||||
"gain": 0.9
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "layer-33",
|
||||
"shaderId": "solid",
|
||||
"parameterValues": {
|
||||
"gain": "bad"
|
||||
}
|
||||
}
|
||||
]
|
||||
})", runtimeState, error), "runtime state fixture parses");
|
||||
|
||||
RenderCadenceCompositor::RuntimeLayerModel model;
|
||||
Expect(model.InitializeFromRuntimeState(catalog, runtimeState, error), "runtime state can initialize the layer model");
|
||||
RenderCadenceCompositor::RuntimeLayerModelSnapshot snapshot = model.Snapshot();
|
||||
Expect(snapshot.displayLayers.size() == 2, "restore keeps supported layers and skips missing shaders");
|
||||
Expect(snapshot.displayLayers[0].id == "layer-31", "restore preserves saved layer id");
|
||||
Expect(snapshot.displayLayers[0].bypass, "restore preserves bypass state");
|
||||
Expect(snapshot.displayLayers[0].parameterValues.at("gain").numberValues.front() == 0.75, "restore preserves valid parameter values");
|
||||
Expect(snapshot.displayLayers[1].id == "layer-33", "restore preserves later supported layer order");
|
||||
Expect(snapshot.displayLayers[1].parameterValues.at("gain").numberValues.front() == 0.5, "restore falls back to defaults for invalid parameter values");
|
||||
|
||||
const std::vector<std::pair<std::string, std::string>> builds = model.PendingLayerBuilds();
|
||||
Expect(builds.size() == 2 && builds[0].first == "layer-31" && builds[1].first == "layer-33", "restore queues startup builds for every restored layer");
|
||||
|
||||
std::filesystem::remove_all(root);
|
||||
}
|
||||
|
||||
void TestLayerControlsUpdateDisplayAndRenderModels()
|
||||
{
|
||||
std::filesystem::path root;
|
||||
@@ -243,6 +294,7 @@ int main()
|
||||
TestRejectsUnsupportedStartupShader();
|
||||
TestBuildFailureStaysDisplaySide();
|
||||
TestAddAndRemoveLayers();
|
||||
TestInitializeFromRuntimeStateRestoresLayerStack();
|
||||
TestLayerControlsUpdateDisplayAndRenderModels();
|
||||
TestReloadRefreshesChangedShaderMetadataAndPreservesValues();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user