Added trigger
All checks were successful
CI / React UI Build (push) Successful in 11s
CI / Native Windows Build And Tests (push) Successful in 1m33s
CI / Windows Release Package (push) Successful in 2m4s

This commit is contained in:
2026-05-06 14:01:23 +10:00
parent e59677c212
commit 6502344d0a
16 changed files with 235 additions and 8 deletions

View File

@@ -167,6 +167,28 @@ void TestTextNormalization()
error.clear();
Expect(!NormalizeAndValidateParameterValue(definition, JsonValue(12.0), value, error), "text rejects non-string values");
}
void TestTriggerNormalization()
{
ShaderParameterDefinition definition;
definition.id = "burst";
definition.type = ShaderParameterType::Trigger;
ShaderParameterValue defaultValue = DefaultValueForDefinition(definition);
Expect(defaultValue.numberValues.size() == 2 && defaultValue.numberValues[0] == 0.0, "trigger defaults to an unfired count");
Expect(defaultValue.numberValues[1] < 0.0, "trigger default time is safely in the past");
ShaderParameterValue value;
std::string error;
Expect(NormalizeAndValidateParameterValue(definition, JsonValue(4.8), value, error), "trigger accepts numeric counts");
Expect(value.numberValues.size() == 2 && value.numberValues[0] == 4.0, "trigger count is floored to an integer");
error.clear();
Expect(NormalizeAndValidateParameterValue(definition, JsonValue(true), value, error), "trigger accepts boolean pulse values");
error.clear();
Expect(!NormalizeAndValidateParameterValue(definition, JsonValue("fire"), value, error), "trigger rejects string values");
}
}
int main()
@@ -177,6 +199,7 @@ int main()
TestColorAndBooleanNormalization();
TestEnumAndDefaults();
TestTextNormalization();
TestTriggerNormalization();
if (gFailures != 0)
{

View File

@@ -64,7 +64,8 @@ void TestValidManifest()
{ "id": "mode", "label": "Mode", "type": "enum", "default": "soft", "options": [
{ "value": "soft", "label": "Soft" },
{ "value": "hard", "label": "Hard" }
] }
] },
{ "id": "flash", "label": "Flash", "type": "trigger" }
]
})");
@@ -76,8 +77,9 @@ void TestValidManifest()
Expect(package.textureAssets.size() == 1 && package.textureAssets[0].id == "maskTex", "texture assets parse");
Expect(package.fontAssets.size() == 1 && package.fontAssets[0].id == "inter", "font assets parse");
Expect(package.temporal.enabled && package.temporal.effectiveHistoryLength == 4, "temporal history is capped");
Expect(package.parameters.size() == 3, "parameters parse");
Expect(package.parameters.size() == 4, "parameters parse");
Expect(package.parameters[1].type == ShaderParameterType::Text && package.parameters[1].defaultTextValue == "LIVE", "text parameter parses");
Expect(package.parameters[3].type == ShaderParameterType::Trigger, "trigger parameter parses");
std::filesystem::remove_all(root);
}