Tighten managed SRP asset materialization
This commit is contained in:
@@ -127,6 +127,16 @@ MonoScriptRuntime::Settings CreateMonoSettings() {
|
||||
return settings;
|
||||
}
|
||||
|
||||
XCEngine::Resources::AssetRef MakeRenderPipelineAssetRefForTest(
|
||||
uint64_t guidLow = 2u) {
|
||||
XCEngine::Resources::AssetRef assetRef = {};
|
||||
assetRef.assetGuid = XCEngine::Resources::AssetGUID(1u, guidLow);
|
||||
assetRef.localID = XCEngine::Resources::kMainAssetLocalID;
|
||||
assetRef.resourceType =
|
||||
XCEngine::Resources::ResourceType::RenderPipelineAsset;
|
||||
return assetRef;
|
||||
}
|
||||
|
||||
class MonoScriptRuntimeTest : public ::testing::Test {
|
||||
protected:
|
||||
void SetUp() override {
|
||||
@@ -478,7 +488,7 @@ TEST_F(
|
||||
|
||||
TEST_F(
|
||||
MonoScriptRuntimeTest,
|
||||
ManagedGraphicsSettingsGetterMaterializesConfiguredAssetWithoutExistingHandle) {
|
||||
ManagedGraphicsSettingsGetterRejectsDescriptorOnlyAssetWithoutSerializedGraph) {
|
||||
Scene* runtimeScene =
|
||||
CreateScene("ManagedRenderPipelineGetterMaterializationScene");
|
||||
GameObject* scriptObject =
|
||||
@@ -507,11 +517,7 @@ TEST_F(
|
||||
EXPECT_EQ(resolvedDescriptor.assemblyName, configuredDescriptor.assemblyName);
|
||||
EXPECT_EQ(resolvedDescriptor.namespaceName, configuredDescriptor.namespaceName);
|
||||
EXPECT_EQ(resolvedDescriptor.className, configuredDescriptor.className);
|
||||
EXPECT_NE(resolvedDescriptor.managedAssetHandle, 0u);
|
||||
EXPECT_NE(
|
||||
runtime->GetExternalManagedObject(
|
||||
resolvedDescriptor.managedAssetHandle),
|
||||
nullptr);
|
||||
EXPECT_EQ(resolvedDescriptor.managedAssetHandle, 0u);
|
||||
|
||||
bool observedAssetWasNull = true;
|
||||
std::string observedPipelineAssetTypeName;
|
||||
@@ -519,14 +525,18 @@ TEST_F(
|
||||
script,
|
||||
"ObservedAssetWasNull",
|
||||
observedAssetWasNull));
|
||||
EXPECT_FALSE(observedAssetWasNull);
|
||||
EXPECT_TRUE(observedAssetWasNull);
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
script,
|
||||
"ObservedPipelineAssetTypeName",
|
||||
observedPipelineAssetTypeName));
|
||||
EXPECT_EQ(
|
||||
observedPipelineAssetTypeName,
|
||||
"Gameplay.RenderPipelineApiProbeAsset");
|
||||
EXPECT_TRUE(observedPipelineAssetTypeName.empty());
|
||||
EXPECT_NE(
|
||||
runtime->GetLastError().find("serialized asset graph"),
|
||||
std::string::npos);
|
||||
EXPECT_NE(
|
||||
runtime->GetLastError().find("GraphicsSettings"),
|
||||
std::string::npos);
|
||||
}
|
||||
|
||||
TEST_F(
|
||||
@@ -679,6 +689,36 @@ TEST_F(
|
||||
EXPECT_FLOAT_EQ(observedFinalColorScale.w, 1.0f);
|
||||
}
|
||||
|
||||
TEST_F(
|
||||
MonoScriptRuntimeTest,
|
||||
ManagedRenderPipelineAssetRuntimeRejectsAssetRefWithoutSerializedGraph) {
|
||||
const auto bridge =
|
||||
XCEngine::Rendering::Pipelines::GetManagedRenderPipelineBridge();
|
||||
ASSERT_NE(bridge, nullptr);
|
||||
|
||||
XCEngine::Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor
|
||||
descriptor = {
|
||||
"GameScripts",
|
||||
"Gameplay",
|
||||
"ManagedRenderPipelineProbeAsset"
|
||||
};
|
||||
descriptor.assetRef = MakeRenderPipelineAssetRefForTest(17u);
|
||||
|
||||
std::shared_ptr<const XCEngine::Rendering::Pipelines::
|
||||
ManagedRenderPipelineAssetRuntime>
|
||||
assetRuntime = bridge->CreateAssetRuntime(descriptor);
|
||||
ASSERT_NE(assetRuntime, nullptr);
|
||||
|
||||
XCEngine::Rendering::FinalColorSettings settings = {};
|
||||
EXPECT_FALSE(assetRuntime->TryGetDefaultFinalColorSettings(settings));
|
||||
EXPECT_NE(
|
||||
runtime->GetLastError().find("AssetRef"),
|
||||
std::string::npos);
|
||||
EXPECT_NE(
|
||||
runtime->GetLastError().find("serialized asset graph"),
|
||||
std::string::npos);
|
||||
}
|
||||
|
||||
TEST_F(
|
||||
MonoScriptRuntimeTest,
|
||||
RuntimeStopClearsManagedGraphicsSettingsSelection) {
|
||||
|
||||
Reference in New Issue
Block a user