Update RenderCadenceCompositorRuntimeLayerModelTests.cpp
This commit is contained in:
@@ -54,6 +54,30 @@ std::string SolidShaderManifest(double gainDefault, bool includeMix)
|
|||||||
})";
|
})";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string AllParametersShaderManifest()
|
||||||
|
{
|
||||||
|
return R"({
|
||||||
|
"id": "all-params",
|
||||||
|
"name": "All Params",
|
||||||
|
"description": "All parameter restore test shader",
|
||||||
|
"category": "Tests",
|
||||||
|
"entryPoint": "shadeVideo",
|
||||||
|
"fonts": [{ "id": "inter", "path": "Inter.ttf" }],
|
||||||
|
"parameters": [
|
||||||
|
{ "id": "gain", "label": "Gain", "type": "float", "default": 0.5, "min": 0.0, "max": 1.0 },
|
||||||
|
{ "id": "offset", "label": "Offset", "type": "vec2", "default": [0.0, 0.0], "min": [-1.0, -1.0], "max": [1.0, 1.0] },
|
||||||
|
{ "id": "tint", "label": "Tint", "type": "color", "default": [1.0, 1.0, 1.0, 1.0], "min": [0.0, 0.0, 0.0, 0.0], "max": [1.0, 1.0, 1.0, 1.0] },
|
||||||
|
{ "id": "enabled", "label": "Enabled", "type": "bool", "default": true },
|
||||||
|
{ "id": "mode", "label": "Mode", "type": "enum", "default": "soft", "options": [
|
||||||
|
{ "value": "soft", "label": "Soft" },
|
||||||
|
{ "value": "hard", "label": "Hard" }
|
||||||
|
] },
|
||||||
|
{ "id": "titleText", "label": "Title", "type": "text", "default": "DEFAULT", "font": "inter", "maxLength": 8 },
|
||||||
|
{ "id": "drop", "label": "Drop", "type": "trigger" }
|
||||||
|
]
|
||||||
|
})";
|
||||||
|
}
|
||||||
|
|
||||||
RenderCadenceCompositor::SupportedShaderCatalog LoadCatalog(const std::filesystem::path& root)
|
RenderCadenceCompositor::SupportedShaderCatalog LoadCatalog(const std::filesystem::path& root)
|
||||||
{
|
{
|
||||||
RenderCadenceCompositor::SupportedShaderCatalog catalog;
|
RenderCadenceCompositor::SupportedShaderCatalog catalog;
|
||||||
@@ -161,8 +185,13 @@ void TestAddAndRemoveLayers()
|
|||||||
|
|
||||||
void TestInitializeFromRuntimeStateRestoresLayerStack()
|
void TestInitializeFromRuntimeStateRestoresLayerStack()
|
||||||
{
|
{
|
||||||
std::filesystem::path root;
|
std::filesystem::path root = MakeTestRoot();
|
||||||
RenderCadenceCompositor::SupportedShaderCatalog catalog = MakeCatalog(root);
|
WriteFile(root / "solid" / "shader.slang", "float4 shadeVideo(float2 uv) { return float4(uv, 0.0, 1.0); }\n");
|
||||||
|
WriteFile(root / "solid" / "shader.json", SolidShaderManifest(0.5, false));
|
||||||
|
WriteFile(root / "all-params" / "shader.slang", "float4 shadeVideo(float2 uv) { return float4(uv, 0.0, 1.0); }\n");
|
||||||
|
WriteFile(root / "all-params" / "Inter.ttf", "not a real font, but enough for restore catalog support checks");
|
||||||
|
WriteFile(root / "all-params" / "shader.json", AllParametersShaderManifest());
|
||||||
|
RenderCadenceCompositor::SupportedShaderCatalog catalog = LoadCatalog(root);
|
||||||
|
|
||||||
JsonValue runtimeState;
|
JsonValue runtimeState;
|
||||||
std::string error;
|
std::string error;
|
||||||
@@ -170,10 +199,15 @@ void TestInitializeFromRuntimeStateRestoresLayerStack()
|
|||||||
"layers": [
|
"layers": [
|
||||||
{
|
{
|
||||||
"id": "layer-31",
|
"id": "layer-31",
|
||||||
"shaderId": "solid",
|
"shaderId": "all-params",
|
||||||
"bypass": true,
|
"bypass": true,
|
||||||
"parameterValues": {
|
"parameterValues": {
|
||||||
"gain": 0.75,
|
"gain": 0.75,
|
||||||
|
"offset": [0.25, -0.5],
|
||||||
|
"tint": [0.1, 0.2, 0.3, 0.4],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "hard",
|
||||||
|
"titleText": "RESTORED-TEXT",
|
||||||
"drop": 4
|
"drop": 4
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -199,13 +233,21 @@ void TestInitializeFromRuntimeStateRestoresLayerStack()
|
|||||||
RenderCadenceCompositor::RuntimeLayerModelSnapshot snapshot = model.Snapshot();
|
RenderCadenceCompositor::RuntimeLayerModelSnapshot snapshot = model.Snapshot();
|
||||||
Expect(snapshot.displayLayers.size() == 2, "restore keeps supported layers and skips missing shaders");
|
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].id == "layer-31", "restore preserves saved layer id");
|
||||||
|
Expect(snapshot.displayLayers[0].shaderId == "all-params", "restore preserves shader id");
|
||||||
Expect(snapshot.displayLayers[0].bypass, "restore preserves bypass state");
|
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[0].parameterValues.at("gain").numberValues.front() == 0.75, "restore preserves valid parameter values");
|
||||||
|
Expect(snapshot.displayLayers[0].parameterValues.at("offset").numberValues == std::vector<double>({ 0.25, -0.5 }), "restore preserves vec2 parameter values");
|
||||||
|
Expect(snapshot.displayLayers[0].parameterValues.at("tint").numberValues == std::vector<double>({ 0.1, 0.2, 0.3, 0.4 }), "restore preserves color parameter values");
|
||||||
|
Expect(!snapshot.displayLayers[0].parameterValues.at("enabled").booleanValue, "restore preserves boolean parameter values");
|
||||||
|
Expect(snapshot.displayLayers[0].parameterValues.at("mode").enumValue == "hard", "restore preserves enum parameter values");
|
||||||
|
Expect(snapshot.displayLayers[0].parameterValues.at("titleText").textValue == "RESTORED", "restore normalizes and preserves text parameter values");
|
||||||
|
Expect(snapshot.displayLayers[0].parameterValues.at("drop").numberValues.front() == 4.0, "restore preserves trigger counts");
|
||||||
Expect(snapshot.displayLayers[1].id == "layer-33", "restore preserves later supported layer order");
|
Expect(snapshot.displayLayers[1].id == "layer-33", "restore preserves later supported layer order");
|
||||||
|
Expect(snapshot.displayLayers[1].shaderId == "solid", "restore preserves later layer shader id");
|
||||||
Expect(snapshot.displayLayers[1].parameterValues.at("gain").numberValues.front() == 0.5, "restore falls back to defaults for invalid parameter values");
|
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();
|
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");
|
Expect(builds.size() == 2 && builds[0].first == "layer-31" && builds[0].second == "all-params" && builds[1].first == "layer-33" && builds[1].second == "solid", "restore queues startup builds for every restored layer in order");
|
||||||
|
|
||||||
std::filesystem::remove_all(root);
|
std::filesystem::remove_all(root);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user