You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
876 lines
36 KiB
C++
876 lines
36 KiB
C++
/*
|
|
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
|
* its licensors.
|
|
*
|
|
* For complete copyright and license terms please see the LICENSE at the root of this
|
|
* distribution (the "License"). All use of this software is governed by the License,
|
|
* or, if provided, by the license below or the license accompanying this file. Do not
|
|
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
*
|
|
*/
|
|
|
|
#include "RCBuilderTest.h"
|
|
|
|
|
|
|
|
TEST_F(RCBuilderTest, CreateBuilderDesc_CreateBuilder_Valid)
|
|
{
|
|
AssetBuilderSDK::AssetBuilderPattern pattern;
|
|
pattern.m_pattern = "*.foo";
|
|
AZStd::vector<AssetBuilderSDK::AssetBuilderPattern> builderPatterns;
|
|
builderPatterns.push_back(pattern);
|
|
|
|
TestInternalRecognizerBasedBuilder test(new MockRCCompiler());
|
|
|
|
AssetBuilderSDK::AssetBuilderDesc result = test.CreateBuilderDesc(this->GetBuilderID(), builderPatterns);
|
|
|
|
ASSERT_EQ(this->GetBuilderName(), result.m_name);
|
|
ASSERT_EQ(this->GetBuilderUUID(), result.m_busId);
|
|
ASSERT_EQ(false, result.IsExternalBuilder());
|
|
ASSERT_TRUE(result.m_patterns.size() == 1);
|
|
ASSERT_EQ(result.m_patterns[0].m_pattern, pattern.m_pattern);
|
|
}
|
|
|
|
TEST_F(RCBuilderTest, Shutdown_NormalShutdown_Requested)
|
|
{
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
|
|
test.ShutDown();
|
|
|
|
ASSERT_EQ(mockRC->m_request_quit, 1);
|
|
}
|
|
|
|
|
|
TEST_F(RCBuilderTest, Initialize_StandardInitializationWithDuplicateAndInvalidRecognizers_Valid)
|
|
{
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
// 3 Asset recognizers, 1 duplicate & 1 without platform should result in only 1 InternalAssetRecognizer
|
|
|
|
// Good spec
|
|
AssetRecognizer good;
|
|
good.m_name = "Good";
|
|
good.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.foo", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard);
|
|
AssetPlatformSpec good_spec;
|
|
good_spec.m_extraRCParams = "/i";
|
|
good.m_platformSpecs["pc"] = good_spec;
|
|
|
|
// No Platform spec
|
|
AssetRecognizer no_platform;
|
|
no_platform.m_name = "No Platform";
|
|
no_platform.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.ccc", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard);
|
|
|
|
// Duplicate
|
|
AssetRecognizer duplicate(good.m_name, good.m_testLockSource, good.m_priority, good.m_isCritical, good.m_supportsCreateJobs, good.m_patternMatcher, good.m_version, good.m_productAssetType, good.m_outputProductDependencies);
|
|
duplicate.m_platformSpecs["pc"] = good_spec;
|
|
|
|
configuration.m_recognizerContainer["good"] = good;
|
|
configuration.m_recognizerContainer["no_platform"] = no_platform;
|
|
configuration.m_recognizerContainer["duplicate"] = duplicate;
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
ASSERT_EQ(mockRC->m_initialize, 1);
|
|
|
|
AZStd::vector<AssetBuilderSDK::PlatformInfo> platformInfos;
|
|
AZStd::unordered_set<AZStd::string> tags;
|
|
tags.insert("tools");
|
|
tags.insert("desktop");
|
|
platformInfos.emplace_back(AssetBuilderSDK::PlatformInfo("pc", tags));
|
|
|
|
InternalRecognizerPointerContainer good_recognizers;
|
|
bool good_recognizers_found = test.GetMatchingRecognizers(platformInfos, "test.foo", good_recognizers);
|
|
ASSERT_TRUE(good_recognizers_found); // Should find at least 1
|
|
ASSERT_EQ(good_recognizers.size(), 1); // 1, not 2 since the duplicates should be removed
|
|
ASSERT_EQ(good_recognizers.at(0)->m_name, good.m_name); // Match the same recognizer
|
|
|
|
|
|
InternalRecognizerPointerContainer bad_recognizers;
|
|
bool no_recognizers_found = !test.GetMatchingRecognizers(platformInfos, "test.ccc", good_recognizers);
|
|
ASSERT_TRUE(no_recognizers_found);
|
|
ASSERT_EQ(bad_recognizers.size(), 0); // 1, not 2 since the duplicates should be removed
|
|
|
|
ASSERT_EQ(m_errorAbsorber->m_numWarningsAbsorbed, 1); // this should be the "duplicate builder" warning.
|
|
ASSERT_EQ(m_errorAbsorber->m_numErrorsAbsorbed, 0);
|
|
ASSERT_EQ(m_errorAbsorber->m_numAssertsAbsorbed, 0);
|
|
}
|
|
|
|
|
|
TEST_F(RCBuilderTest, CreateJobs_CreateSingleJobStandard_Valid)
|
|
{
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
AssetRecognizer good;
|
|
good.m_name = "Good";
|
|
good.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.foo", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard);
|
|
AssetPlatformSpec good_spec;
|
|
good_spec.m_extraRCParams = "/i";
|
|
good.m_platformSpecs["pc"] = good_spec;
|
|
configuration.m_recognizerContainer["good"] = good;
|
|
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
AssetBuilderSDK::CreateJobsRequest request;
|
|
AssetBuilderSDK::CreateJobsResponse response;
|
|
|
|
request.m_watchFolder = "c:\temp";
|
|
request.m_sourceFile = "test.foo";
|
|
request.m_enabledPlatforms = { AssetBuilderSDK::PlatformInfo("pc", { "desktop", "renderer" }) };
|
|
AssetProcessor::BUILDER_ID_RC.GetUuid(request.m_builderid);
|
|
|
|
test.CreateJobs(request, response);
|
|
|
|
ASSERT_EQ(response.m_result, AssetBuilderSDK::CreateJobsResultCode::Success);
|
|
ASSERT_EQ(response.m_createJobOutputs.size(), 1);
|
|
|
|
AssetBuilderSDK::JobDescriptor descriptor = response.m_createJobOutputs.at(0);
|
|
ASSERT_EQ(descriptor.GetPlatformIdentifier(), "pc");
|
|
ASSERT_FALSE(descriptor.m_critical);
|
|
}
|
|
|
|
TEST_F(RCBuilderTest, CreateJobs_CreateMultiplesJobStandard_Valid)
|
|
{
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
AssetRecognizer standard_AR_RC;
|
|
const AZStd::string job_key_rc = "RCjob";
|
|
{
|
|
standard_AR_RC.m_name = "RCjob";
|
|
standard_AR_RC.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.foo", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard);
|
|
AssetPlatformSpec good_rc_spec;
|
|
good_rc_spec.m_extraRCParams = "/i";
|
|
standard_AR_RC.m_platformSpecs["pc"] = good_rc_spec;
|
|
}
|
|
configuration.m_recognizerContainer["rc_foo"] = standard_AR_RC;
|
|
|
|
AssetRecognizer standard_AR_Copy;
|
|
const AZStd::string job_key_copy = "Copyjob";
|
|
{
|
|
standard_AR_Copy.m_name = QString(job_key_copy.c_str());
|
|
standard_AR_Copy.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.foo", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard);
|
|
AssetPlatformSpec good_copy_spec;
|
|
good_copy_spec.m_extraRCParams = "copy";
|
|
standard_AR_Copy.m_platformSpecs["pc"] = good_copy_spec;
|
|
}
|
|
configuration.m_recognizerContainer["copy_foo"] = standard_AR_Copy;
|
|
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
// Request is for the copy builder
|
|
{
|
|
AssetBuilderSDK::CreateJobsRequest request_copy;
|
|
AssetBuilderSDK::CreateJobsResponse response_copy;
|
|
|
|
request_copy.m_watchFolder = "c:\temp";
|
|
request_copy.m_sourceFile = "test.foo";
|
|
|
|
request_copy.m_enabledPlatforms = { AssetBuilderSDK::PlatformInfo("pc",{ "desktop", "renderer" }) };
|
|
AssetProcessor::BUILDER_ID_COPY.GetUuid(request_copy.m_builderid);
|
|
test.CreateJobs(request_copy, response_copy);
|
|
|
|
ASSERT_EQ(response_copy.m_result, AssetBuilderSDK::CreateJobsResultCode::Success);
|
|
ASSERT_EQ(response_copy.m_createJobOutputs.size(), 1);
|
|
|
|
AssetBuilderSDK::JobDescriptor descriptor = response_copy.m_createJobOutputs.at(0);
|
|
ASSERT_EQ(descriptor.GetPlatformIdentifier(), "pc");
|
|
ASSERT_EQ(descriptor.m_jobKey.compare(job_key_copy), 0);
|
|
ASSERT_TRUE(descriptor.m_critical);
|
|
}
|
|
|
|
// Request is for the rc builder
|
|
{
|
|
AssetBuilderSDK::CreateJobsRequest request_rc;
|
|
AssetBuilderSDK::CreateJobsResponse response_rc;
|
|
|
|
request_rc.m_watchFolder = "c:\temp";
|
|
request_rc.m_sourceFile = "test.foo";
|
|
request_rc.m_enabledPlatforms = { AssetBuilderSDK::PlatformInfo("pc",{ "desktop", "renderer" }) };
|
|
AssetProcessor::BUILDER_ID_RC.GetUuid(request_rc.m_builderid);
|
|
test.CreateJobs(request_rc, response_rc);
|
|
|
|
ASSERT_EQ(response_rc.m_result, AssetBuilderSDK::CreateJobsResultCode::Success);
|
|
ASSERT_EQ(response_rc.m_createJobOutputs.size(), 1);
|
|
|
|
AssetBuilderSDK::JobDescriptor descriptor = response_rc.m_createJobOutputs.at(0);
|
|
ASSERT_EQ(descriptor.GetPlatformIdentifier(), "pc");
|
|
ASSERT_EQ(descriptor.m_jobKey.compare(job_key_rc), 0);
|
|
ASSERT_FALSE(descriptor.m_critical);
|
|
}
|
|
|
|
}
|
|
|
|
TEST_F(RCBuilderTest, CreateJobs_CreateSingleJobCopy_Valid)
|
|
{
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
AssetRecognizer copy;
|
|
copy.m_name = "Copy";
|
|
copy.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.copy", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard);
|
|
AssetPlatformSpec copy_spec;
|
|
copy_spec.m_extraRCParams = "copy";
|
|
copy.m_platformSpecs["pc"] = copy_spec;
|
|
configuration.m_recognizerContainer["copy"] = copy;
|
|
|
|
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
AssetBuilderSDK::CreateJobsRequest request;
|
|
AssetBuilderSDK::CreateJobsResponse response;
|
|
|
|
request.m_watchFolder = "c:\temp";
|
|
request.m_sourceFile = "test.copy";
|
|
request.m_enabledPlatforms = { AssetBuilderSDK::PlatformInfo("pc",{ "desktop", "renderer" }) };
|
|
AssetProcessor::BUILDER_ID_COPY.GetUuid(request.m_builderid);
|
|
|
|
test.CreateJobs(request, response);
|
|
|
|
ASSERT_EQ(response.m_result, AssetBuilderSDK::CreateJobsResultCode::Success);
|
|
ASSERT_EQ(response.m_createJobOutputs.size(), 1);
|
|
|
|
AssetBuilderSDK::JobDescriptor descriptor = response.m_createJobOutputs.at(0);
|
|
ASSERT_EQ(descriptor.GetPlatformIdentifier(), "pc");
|
|
ASSERT_TRUE(descriptor.m_critical);
|
|
}
|
|
|
|
TEST_F(RCBuilderTest, CreateJobs_CreateSingleJobStandardSkip_Valid)
|
|
{
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
{
|
|
AssetRecognizer skip;
|
|
skip.m_name = "Skip";
|
|
skip.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.skip", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard);
|
|
AssetPlatformSpec skip_spec;
|
|
skip_spec.m_extraRCParams = "skip";
|
|
skip.m_platformSpecs["pc"] = skip_spec;
|
|
configuration.m_recognizerContainer["skip"] = skip;
|
|
}
|
|
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
AssetBuilderSDK::CreateJobsRequest request;
|
|
AssetBuilderSDK::CreateJobsResponse response;
|
|
|
|
request.m_watchFolder = "c:\temp";
|
|
request.m_sourceFile = "test.skip";
|
|
request.m_enabledPlatforms = { AssetBuilderSDK::PlatformInfo("pc",{ "desktop", "renderer" }) };
|
|
request.m_builderid = this->GetBuilderUUID();
|
|
|
|
test.CreateJobs(request, response);
|
|
|
|
ASSERT_EQ(response.m_result, AssetBuilderSDK::CreateJobsResultCode::Success);
|
|
ASSERT_EQ(response.m_createJobOutputs.size(), 0);
|
|
}
|
|
|
|
|
|
TEST_F(RCBuilderTest, CreateJobs_CreateSingleJobStandard_Failed)
|
|
{
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
AssetRecognizer good;
|
|
good.m_name = "Good";
|
|
good.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.foo", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard);
|
|
AssetPlatformSpec good_spec;
|
|
good_spec.m_extraRCParams = "/i";
|
|
good.m_platformSpecs["pc"] = good_spec;
|
|
configuration.m_recognizerContainer["good"] = good;
|
|
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
AssetBuilderSDK::CreateJobsRequest request;
|
|
AssetBuilderSDK::CreateJobsResponse response;
|
|
|
|
request.m_watchFolder = "c:\temp";
|
|
request.m_sourceFile = "test.ccc";
|
|
request.m_enabledPlatforms = { AssetBuilderSDK::PlatformInfo("pc",{ "desktop", "renderer" }) };
|
|
request.m_builderid = this->GetBuilderUUID();
|
|
|
|
test.CreateJobs(request, response);
|
|
|
|
ASSERT_EQ(response.m_result, AssetBuilderSDK::CreateJobsResultCode::Failed);
|
|
ASSERT_EQ(response.m_createJobOutputs.size(), 0);
|
|
}
|
|
|
|
TEST_F(RCBuilderTest, CreateJobs_CreateSingleJobStandard_ShuttingDown)
|
|
{
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
AssetRecognizer good;
|
|
good.m_name = "Good";
|
|
good.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.foo", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard);
|
|
AssetPlatformSpec good_spec;
|
|
good_spec.m_extraRCParams = "/i";
|
|
good.m_platformSpecs["pc"] = good_spec;
|
|
configuration.m_recognizerContainer["good"] = good;
|
|
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
test.ShutDown();
|
|
|
|
AssetBuilderSDK::CreateJobsRequest request;
|
|
AssetBuilderSDK::CreateJobsResponse response;
|
|
|
|
request.m_watchFolder = "c:\temp";
|
|
request.m_sourceFile = "test.ccc";
|
|
request.m_enabledPlatforms = { AssetBuilderSDK::PlatformInfo("pc",{ "desktop", "renderer" }) };
|
|
request.m_builderid = this->GetBuilderUUID();
|
|
|
|
test.CreateJobs(request, response);
|
|
|
|
ASSERT_EQ(response.m_result, AssetBuilderSDK::CreateJobsResultCode::ShuttingDown);
|
|
ASSERT_EQ(response.m_createJobOutputs.size(), 0);
|
|
}
|
|
|
|
TEST_F(RCBuilderTest, CreateJobs_CreateSingleJobBadJobRequest1_Failed)
|
|
{
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
AssetRecognizer good;
|
|
good.m_name = "Good";
|
|
good.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.foo", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard);
|
|
AssetPlatformSpec good_spec;
|
|
good_spec.m_extraRCParams = "/i";
|
|
good.m_platformSpecs["pc"] = good_spec;
|
|
configuration.m_recognizerContainer["good"] = good;
|
|
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
AssetBuilderSDK::CreateJobsRequest request;
|
|
AssetBuilderSDK::CreateJobsResponse response;
|
|
|
|
request.m_sourceFile = "test.ccc";
|
|
request.m_enabledPlatforms = { AssetBuilderSDK::PlatformInfo("pc",{ "desktop", "renderer" }) };
|
|
request.m_builderid = this->GetBuilderUUID();
|
|
|
|
test.CreateJobs(request, response);
|
|
|
|
ASSERT_EQ(response.m_result, AssetBuilderSDK::CreateJobsResultCode::Failed);
|
|
ASSERT_EQ(response.m_createJobOutputs.size(), 0);
|
|
}
|
|
|
|
TEST_F(RCBuilderTest, ProcessLegacyRCJob_ProcessStandardSingleJob_Failed)
|
|
{
|
|
AZ::Uuid assetTypeUUid = AZ::Uuid::CreateRandom();
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
// Create the test job
|
|
AssetBuilderSDK::ProcessJobRequest request = CreateTestJobRequest("file.c", false, "pc", 1);
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
// Case 1: execution failed
|
|
mockRC->SetResultResultExecute(NativeLegacyRCCompiler::Result(1, true, ""));
|
|
mockRC->SetResultExecute(false);
|
|
AssetBuilderSDK::ProcessJobResponse responseCrashed;
|
|
AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId);
|
|
test.TestProcessLegacyRCJob(request, "/i", assetTypeUUid, jobCancelListener, responseCrashed);
|
|
ASSERT_EQ(responseCrashed.m_resultCode, AssetBuilderSDK::ProcessJobResultCode::ProcessJobResult_Crashed);
|
|
|
|
// case 2: result code from execution non-zero
|
|
mockRC->SetResultExecute(true);
|
|
mockRC->SetResultResultExecute(NativeLegacyRCCompiler::Result(1, false, ""));
|
|
AssetBuilderSDK::ProcessJobResponse responseFailed;
|
|
test.TestProcessLegacyRCJob(request, "/i", assetTypeUUid, jobCancelListener, responseFailed);
|
|
ASSERT_EQ(responseFailed.m_resultCode, AssetBuilderSDK::ProcessJobResultCode::ProcessJobResult_Failed);
|
|
}
|
|
|
|
|
|
TEST_F(RCBuilderTest, ProcessLegacyRCJob_ProcessStandardSingleJob_Valid)
|
|
{
|
|
AZ::Uuid assetTypeUUid = AZ::Uuid::CreateRandom();
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
// Create the test job
|
|
AssetBuilderSDK::ProcessJobRequest request = CreateTestJobRequest("file.c", false, "pc");
|
|
|
|
|
|
test.AddTestFileInfo("c:\\temp\\file.a").AddTestFileInfo("c:\\temp\\file.b");
|
|
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
mockRC->SetResultResultExecute(NativeLegacyRCCompiler::Result(0, false, "c:\\temp"));
|
|
mockRC->SetResultExecute(true);
|
|
AssetBuilderSDK::ProcessJobResponse response;
|
|
AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId);
|
|
test.TestProcessLegacyRCJob(request, "/i", assetTypeUUid, jobCancelListener, response);
|
|
ASSERT_EQ(response.m_resultCode, AssetBuilderSDK::ProcessJobResultCode::ProcessJobResult_Success);
|
|
|
|
ASSERT_EQ(response.m_outputProducts.size(), 2); // file.c->(file.a, file.b)
|
|
}
|
|
|
|
|
|
TEST_F(RCBuilderTest, ProcessLegacyRCJob_ProcessCopySingleJob_Valid)
|
|
{
|
|
AZStd::string name = "test";
|
|
AZ::Uuid builderUuid = AZ::Uuid::CreateRandom();
|
|
AZ::Uuid assetTypeUUid = AZ::Uuid::CreateRandom();
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
// Create the test job
|
|
AssetBuilderSDK::ProcessJobRequest request = CreateTestJobRequest("file.c", false, "pc");
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
mockRC->SetResultResultExecute(NativeLegacyRCCompiler::Result(0, false, "c:\\temp"));
|
|
mockRC->SetResultExecute(true);
|
|
AssetBuilderSDK::ProcessJobResponse response;
|
|
AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId);
|
|
test.TestProcessCopyJob(request, assetTypeUUid, jobCancelListener, response);
|
|
ASSERT_EQ(response.m_resultCode, AssetBuilderSDK::ProcessJobResultCode::ProcessJobResult_Success);
|
|
|
|
ASSERT_EQ(response.m_outputProducts.size(), 1); // file.c->(file.a, file.b)
|
|
AssetBuilderSDK::JobProduct resultJobProd = response.m_outputProducts.at(0);
|
|
ASSERT_EQ(resultJobProd.m_productAssetType, assetTypeUUid);
|
|
ASSERT_EQ(resultJobProd.m_productFileName, request.m_fullPath);
|
|
}
|
|
|
|
|
|
TEST_F(RCBuilderTest, MatchTempFileToSkip_SkipRCFiles_true)
|
|
{
|
|
const char* rc_skip_fileNames[] = {
|
|
"rc_createdfiles.txt",
|
|
"rc_log.log",
|
|
"rc_log_warnings.log",
|
|
"rc_log_errors.log"
|
|
};
|
|
|
|
for (const char* filename : rc_skip_fileNames)
|
|
{
|
|
ASSERT_TRUE(AssetProcessor::InternalRecognizerBasedBuilder::MatchTempFileToSkip(filename));
|
|
}
|
|
}
|
|
|
|
TEST_F(RCBuilderTest, MatchTempFileToSkip_SkipRCFiles_false)
|
|
{
|
|
const char* rc_not_skip_fileNames[] = {
|
|
"foo.log",
|
|
"bar.txt"
|
|
};
|
|
|
|
for (const char* filename : rc_not_skip_fileNames)
|
|
{
|
|
ASSERT_FALSE(AssetProcessor::InternalRecognizerBasedBuilder::MatchTempFileToSkip(filename));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
TEST_F(RCBuilderTest, ProcessJob_ProcessStandardRCSingleJob_Valid)
|
|
{
|
|
AZ::Uuid assetTypeUUid = AZ::Uuid::CreateRandom();
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
|
|
// Create a dummy test recognizer
|
|
AZ::u32 recID = test.AddTestRecognizer(this->GetBuilderID(),QString("/i"), "pc");
|
|
|
|
// Create the test job
|
|
AssetBuilderSDK::ProcessJobRequest request = CreateTestJobRequest("test.tif", false, "pc");
|
|
request.m_jobDescription.m_jobParameters[recID] = "/i";
|
|
|
|
|
|
test.AddTestFileInfo("c:\\temp\\file.a").AddTestFileInfo("c:\\temp\\file.b");
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
mockRC->SetResultResultExecute(NativeLegacyRCCompiler::Result(0, false, "c:\\temp"));
|
|
mockRC->SetResultExecute(true);
|
|
AssetBuilderSDK::ProcessJobResponse response;
|
|
test.TestProcessJob(request, response);
|
|
ASSERT_EQ(response.m_resultCode, AssetBuilderSDK::ProcessJobResultCode::ProcessJobResult_Success);
|
|
ASSERT_EQ(response.m_outputProducts.size(), 2); // file.c->(file.a, file.b)
|
|
}
|
|
|
|
|
|
TEST_F(RCBuilderTest, ProcessJob_ProcessStandardRCSingleJob_Failed)
|
|
{
|
|
AZ::Uuid assetTypeUUid = AZ::Uuid::CreateRandom();
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
|
|
// Create a dummy test recognizer
|
|
AZ::u32 recID = test.AddTestRecognizer(this->GetBuilderID(), QString("/i"), "pc");
|
|
|
|
// Create the test job
|
|
AssetBuilderSDK::ProcessJobRequest request = CreateTestJobRequest("test.tif", false, "pc");
|
|
request.m_jobDescription.m_jobParameters[recID] = "/i";
|
|
|
|
test.AddTestFileInfo("c:\\temp\\file.a").AddTestFileInfo("c:\\temp\\file.b");
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
mockRC->SetResultResultExecute(NativeLegacyRCCompiler::Result(1, false, "c:\\temp"));
|
|
mockRC->SetResultExecute(true);
|
|
AssetBuilderSDK::ProcessJobResponse response;
|
|
test.TestProcessJob(request, response);
|
|
ASSERT_EQ(response.m_resultCode, AssetBuilderSDK::ProcessJobResultCode::ProcessJobResult_Failed);
|
|
}
|
|
|
|
|
|
TEST_F(RCBuilderTest, ProcessJob_ProcessStandardCopySingleJob_Valid)
|
|
{
|
|
AZ::Uuid assetTypeUUid = AZ::Uuid::CreateRandom();
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
|
|
// Create a dummy test recognizer
|
|
AZ::u32 recID = test.AddTestRecognizer(this->GetBuilderID(), QString("copy"), "pc");
|
|
|
|
// Create the test job
|
|
AssetBuilderSDK::ProcessJobRequest request = CreateTestJobRequest("test.tif", true, "pc");
|
|
request.m_jobDescription.m_jobParameters[recID] = "copy";
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
mockRC->SetResultExecute(true);
|
|
AssetBuilderSDK::ProcessJobResponse response;
|
|
test.TestProcessJob(request, response);
|
|
ASSERT_EQ(response.m_resultCode, AssetBuilderSDK::ProcessJobResultCode::ProcessJobResult_Success);
|
|
ASSERT_EQ(response.m_outputProducts.size(), 1); // test.
|
|
ASSERT_TRUE(response.m_outputProducts[0].m_productFileName.find("test.tif") != AZStd::string::npos);
|
|
}
|
|
|
|
TEST_F(RCBuilderTest, ProcessJob_ProcessStandardSkippedSingleJob_Invalid)
|
|
{
|
|
AZ::Uuid assetTypeUUid = AZ::Uuid::CreateRandom();
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
|
|
// Create a dummy test recognizer
|
|
AZ::u32 recID = test.AddTestRecognizer(this->GetBuilderID(), QString("skip"), "pc");
|
|
|
|
// Create the test job
|
|
AssetBuilderSDK::ProcessJobRequest request = CreateTestJobRequest("test.tif", true, "pc");
|
|
request.m_jobDescription.m_jobParameters[recID] = "copy";
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
ASSERT_TRUE(initialization_result);
|
|
|
|
mockRC->SetResultExecute(true);
|
|
AssetBuilderSDK::ProcessJobResponse response;
|
|
test.TestProcessJob(request, response);
|
|
ASSERT_EQ(response.m_resultCode, AssetBuilderSDK::ProcessJobResultCode::ProcessJobResult_Failed);
|
|
}
|
|
|
|
|
|
TEST_F(RCBuilderTest, TestProcessRCResultFolder_LegacySystem)
|
|
{
|
|
TestInternalRecognizerBasedBuilder test(new MockRCCompiler());
|
|
test.AddTestFileInfo("file.dds")
|
|
.AddTestFileInfo("file.caf")
|
|
.AddTestFileInfo("file.png")
|
|
.AddTestFileInfo("rc_createdfiles.txt")
|
|
.AddTestFileInfo("rc_log.log")
|
|
.AddTestFileInfo("rc_log_warnings.log")
|
|
.AddTestFileInfo("rc_log_errors.log")
|
|
.AddTestFileInfo("ProcessJobRequest.xml")
|
|
.AddTestFileInfo("ProcessJobResponse.xml");
|
|
|
|
AZ::Uuid productGUID = AZ::Uuid("{60554E3C-D8D5-4429-AC77-740F0ED46193}");
|
|
|
|
AssetBuilderSDK::ProcessJobResponse response;
|
|
test.TestProcessRCResultFolder("c:\\temp", productGUID, false, response);
|
|
|
|
ASSERT_EQ(response.m_resultCode, AssetBuilderSDK::ProcessJobResultCode::ProcessJobResult_Success);
|
|
|
|
// we expect it to have ignored most of the file cruft.
|
|
ASSERT_EQ(response.m_outputProducts.size(), 3);
|
|
|
|
AZStd::string fileJoined;
|
|
|
|
AzFramework::StringFunc::Path::Join("c:\\temp", "file.dds", fileJoined);
|
|
ASSERT_EQ(response.m_outputProducts[0].m_productFileName, fileJoined);
|
|
ASSERT_EQ(response.m_outputProducts[0].m_productAssetType, productGUID);
|
|
ASSERT_EQ(response.m_outputProducts[0].m_productSubID, 0x00000000);
|
|
ASSERT_EQ(response.m_outputProducts[0].m_legacySubIDs.size(), 0);
|
|
|
|
AzFramework::StringFunc::Path::Join("c:\\temp", "file.caf", fileJoined);
|
|
ASSERT_EQ(response.m_outputProducts[1].m_productFileName, fileJoined);
|
|
ASSERT_EQ(response.m_outputProducts[1].m_productAssetType, productGUID);
|
|
ASSERT_EQ(response.m_outputProducts[1].m_productSubID, (AZ_CRC("file.caf", 0x91277b80) & 0x0000FFFF)); // legacy subids are just the lower 16 bits of the crc of filename.
|
|
ASSERT_EQ(response.m_outputProducts[1].m_legacySubIDs.size(), 0);
|
|
|
|
AzFramework::StringFunc::Path::Join("c:\\temp", "file.png", fileJoined);
|
|
ASSERT_EQ(response.m_outputProducts[2].m_productFileName, fileJoined);
|
|
ASSERT_EQ(response.m_outputProducts[2].m_productAssetType, productGUID);
|
|
ASSERT_EQ(response.m_outputProducts[2].m_productSubID, (AZ_CRC("file.png", 0x7fd84af0) & 0x0000FFFF));
|
|
ASSERT_EQ(response.m_outputProducts[2].m_legacySubIDs.size(), 0);
|
|
}
|
|
|
|
TEST_F(RCBuilderTest, TestProcessRCResultFolder_Fail_Fail)
|
|
{
|
|
TestInternalRecognizerBasedBuilder test(new MockRCCompiler());
|
|
AssetBuilderSDK::ProcessJobResponse response;
|
|
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed;
|
|
|
|
AZ::Uuid productGUID = AZ::Uuid("{60554E3C-D8D5-4429-AC77-740F0ED46193}");
|
|
test.TestProcessRCResultFolder("c:\\temp", productGUID, true, response);
|
|
ASSERT_EQ(response.m_resultCode, AssetBuilderSDK::ProcessJobResult_Failed);
|
|
}
|
|
|
|
TEST_F(RCBuilderTest, TestProcessRCResultFolder_Succeed_NothingBuilt)
|
|
{
|
|
TestInternalRecognizerBasedBuilder test(new MockRCCompiler());
|
|
AssetBuilderSDK::ProcessJobResponse response;
|
|
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
|
|
|
|
AZ::Uuid productGUID = AZ::Uuid("{60554E3C-D8D5-4429-AC77-740F0ED46193}");
|
|
test.TestProcessRCResultFolder("c:\\temp", productGUID, true, response);
|
|
ASSERT_EQ(response.m_resultCode, AssetBuilderSDK::ProcessJobResult_Success);
|
|
}
|
|
|
|
TEST_F(RCBuilderTest, TestProcessRCResultFolder_Fail_BadName)
|
|
{
|
|
TestInternalRecognizerBasedBuilder test(new MockRCCompiler());
|
|
AssetBuilderSDK::ProcessJobResponse response;
|
|
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
|
|
|
|
AZ::Uuid productGUID = AZ::Uuid("{60554E3C-D8D5-4429-AC77-740F0ED46193}");
|
|
// note: empty name on next line
|
|
response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct("", productGUID, 1234));
|
|
test.TestProcessRCResultFolder("c:\\temp", productGUID, true, response);
|
|
ASSERT_EQ(response.m_resultCode, AssetBuilderSDK::ProcessJobResult_Failed);
|
|
}
|
|
|
|
TEST_F(RCBuilderTest, TestProcessRCResultFolder_Fail_DuplicateFile)
|
|
{
|
|
m_errorAbsorber->m_debugMessages = true;
|
|
TestInternalRecognizerBasedBuilder test(new MockRCCompiler());
|
|
AssetBuilderSDK::ProcessJobResponse response;
|
|
test.AddTestFileInfo("file.dds");
|
|
AZ::Uuid productGUID = AZ::Uuid("{60554E3C-D8D5-4429-AC77-740F0ED46193}");
|
|
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
|
|
response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct("file.dds", productGUID, 1234));
|
|
response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct("file.dds", productGUID, 5679));
|
|
test.TestProcessRCResultFolder("c:\\temp", productGUID, true, response);
|
|
m_errorAbsorber->AssertErrors(1);
|
|
ASSERT_EQ(response.m_resultCode, AssetBuilderSDK::ProcessJobResult_Failed);
|
|
}
|
|
|
|
TEST_F(RCBuilderTest, TestProcessRCResultFolder_Fail_DuplicateSubID)
|
|
{
|
|
TestInternalRecognizerBasedBuilder test(new MockRCCompiler());
|
|
AssetBuilderSDK::ProcessJobResponse response;
|
|
test.AddTestFileInfo("file.dds")
|
|
.AddTestFileInfo("file.caf");
|
|
AZ::Uuid productGUID = AZ::Uuid("{60554E3C-D8D5-4429-AC77-740F0ED46193}");
|
|
|
|
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
|
|
response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct("file.dds", productGUID, 1234));
|
|
response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct("file.caf", productGUID, 1234));
|
|
test.TestProcessRCResultFolder("c:\\temp", productGUID, true, response);
|
|
ASSERT_EQ(m_errorAbsorber->m_numErrorsAbsorbed, 1);
|
|
ASSERT_EQ(response.m_resultCode, AssetBuilderSDK::ProcessJobResult_Failed);
|
|
}
|
|
|
|
|
|
TEST_F(RCBuilderTest, TestProcessRCResultFolder_WithResponseFromRC)
|
|
{
|
|
TestInternalRecognizerBasedBuilder test(new MockRCCompiler());
|
|
test.AddTestFileInfo("file.dds")
|
|
.AddTestFileInfo("file.caf")
|
|
.AddTestFileInfo("file.png")
|
|
.AddTestFileInfo("rc_createdfiles.txt")
|
|
.AddTestFileInfo("rc_log.log")
|
|
.AddTestFileInfo("rc_log_warnings.log")
|
|
.AddTestFileInfo("rc_log_errors.log")
|
|
.AddTestFileInfo("ProcessJobRequest.xml")
|
|
.AddTestFileInfo("ProcessJobResponse.xml");
|
|
|
|
AZ::Uuid productGUID = AZ::Uuid::CreateNull(); // this is to make sure that it doesn't matter what we pass in
|
|
AZ::Uuid actualGUID = AZ::Uuid("{60554E3C-D8D5-4429-AC77-740F0ED46193}");
|
|
|
|
AssetBuilderSDK::ProcessJobResponse response;
|
|
|
|
response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct("file.dds", actualGUID, 1234));
|
|
response.m_outputProducts.back().m_legacySubIDs.push_back(3333);
|
|
response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct("file.caf", actualGUID, 3456));
|
|
response.m_outputProducts.back().m_legacySubIDs.push_back(2222);
|
|
response.m_outputProducts.back().m_legacySubIDs.push_back((AZ_CRC("file.caf", 0x91277b80) & 0x0000FFFF)); // push back the existing one to make sure no dupes.
|
|
response.m_resultCode = AssetBuilderSDK::ProcessJobResultCode::ProcessJobResult_Success;
|
|
|
|
// in this test we pretend the response was actually populated by the builder and make sure it populates the legacy IDs correctly
|
|
// 1. there should actually BE legacy IDs
|
|
// 2. there should be no duplicate IDs (legacy IDs should not duplicate ACTUAL ids)
|
|
// 3. there should be no duplicate Legacy IDs (legacy IDs should not duplicate each other)
|
|
// 4. if we provide legacy Ids, they should be used in addition to the automatic ones.
|
|
|
|
test.TestProcessRCResultFolder("c:\\temp", productGUID, true, response);
|
|
|
|
ASSERT_EQ(response.m_resultCode, AssetBuilderSDK::ProcessJobResultCode::ProcessJobResult_Success);
|
|
|
|
// we expect it to only have accepted the products we specified.
|
|
ASSERT_EQ(response.m_outputProducts.size(), 2);
|
|
|
|
AZStd::string fileJoined;
|
|
|
|
AzFramework::StringFunc::Path::Join("c:\\temp", "file.dds", fileJoined);
|
|
ASSERT_EQ(response.m_outputProducts[0].m_productFileName, fileJoined);
|
|
ASSERT_EQ(response.m_outputProducts[0].m_productAssetType, actualGUID);
|
|
ASSERT_EQ(response.m_outputProducts[0].m_productSubID, 1234);
|
|
ASSERT_EQ(response.m_outputProducts[0].m_legacySubIDs.size(), 2); // it must include our new one AND the zero that it would have generated before.
|
|
ASSERT_EQ(response.m_outputProducts[0].m_legacySubIDs[0], 3333);
|
|
ASSERT_EQ(response.m_outputProducts[0].m_legacySubIDs[1], 0);
|
|
|
|
AzFramework::StringFunc::Path::Join("c:\\temp", "file.caf", fileJoined);
|
|
ASSERT_EQ(response.m_outputProducts[1].m_productFileName, fileJoined);
|
|
ASSERT_EQ(response.m_outputProducts[1].m_productAssetType, actualGUID);
|
|
ASSERT_EQ(response.m_outputProducts[1].m_productSubID, 3456); // legacy subids are just the lower 16 bits of the crc of filename.
|
|
ASSERT_EQ(response.m_outputProducts[1].m_legacySubIDs.size(), 2); // we only expect the one legacy, no dupes!
|
|
ASSERT_EQ(response.m_outputProducts[1].m_legacySubIDs[0], 2222);
|
|
ASSERT_EQ(response.m_outputProducts[1].m_legacySubIDs[1], (AZ_CRC("file.caf", 0x91277b80) & 0x0000FFFF));
|
|
}
|
|
|
|
class MockBuilderListener : public AssetBuilderSDK::AssetBuilderBus::Handler
|
|
{
|
|
public:
|
|
void RegisterBuilderInformation(const AssetBuilderSDK::AssetBuilderDesc& builderDesc) override
|
|
{
|
|
m_wasCalled = true;
|
|
m_result = builderDesc;
|
|
}
|
|
|
|
bool m_wasCalled = false;
|
|
AssetBuilderSDK::AssetBuilderDesc m_result;
|
|
};
|
|
|
|
|
|
class RCBuilderFingerprintTest
|
|
: public RCBuilderTest
|
|
{
|
|
|
|
public:
|
|
|
|
// A utility function which feeds in the version and asset type to the builder, fingerprints it, and returns the fingerprint
|
|
AZStd::string BuildFingerprint(int versionNumber, AZ::Uuid builderProductType)
|
|
{
|
|
MockRCCompiler* mockRC = new MockRCCompiler();
|
|
TestInternalRecognizerBasedBuilder test(mockRC);
|
|
|
|
MockRecognizerConfiguration configuration;
|
|
|
|
AssetPlatformSpec good_spec;
|
|
good_spec.m_extraRCParams = "/i";
|
|
|
|
AssetRecognizer good;
|
|
good.m_name = "Good";
|
|
good.m_version = versionNumber;
|
|
good.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.foo", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard);
|
|
good.m_platformSpecs["pc"] = good_spec;
|
|
good.m_productAssetType = builderProductType;
|
|
|
|
configuration.m_recognizerContainer["good"] = good;
|
|
|
|
MockBuilderListener listener;
|
|
listener.BusConnect();
|
|
|
|
bool initialization_result = test.Initialize(configuration);
|
|
listener.BusDisconnect();
|
|
|
|
EXPECT_TRUE(listener.m_wasCalled);
|
|
EXPECT_TRUE(initialization_result);
|
|
|
|
EXPECT_STRNE(listener.m_result.m_analysisFingerprint.c_str(), "");
|
|
return listener.m_result.m_analysisFingerprint;
|
|
}
|
|
};
|
|
|
|
TEST_F(RCBuilderFingerprintTest, DifferentVersion_Has_DifferentAnalysisFingerprint)
|
|
{
|
|
AZ::Uuid uuid1 = AZ::Uuid::CreateRandom();
|
|
AZStd::string analysisFingerprint1 = BuildFingerprint(1, uuid1);
|
|
AZStd::string analysisFingerprint2 = BuildFingerprint(2, uuid1);
|
|
EXPECT_STRNE(analysisFingerprint1.c_str(), analysisFingerprint2.c_str());
|
|
}
|
|
|
|
TEST_F(RCBuilderFingerprintTest, DifferentAssetType_Has_DifferentAnalysisFingerprint)
|
|
{
|
|
AZ::Uuid uuid1 = AZ::Uuid::CreateRandom();
|
|
AZ::Uuid uuid2 = AZ::Uuid::CreateRandom();
|
|
AZStd::string analysisFingerprint1 = BuildFingerprint(1, uuid1);
|
|
AZStd::string analysisFingerprint2 = BuildFingerprint(1, uuid2);
|
|
EXPECT_STRNE(analysisFingerprint1.c_str(), analysisFingerprint2.c_str());
|
|
}
|
|
|
|
TEST_F(RCBuilderFingerprintTest, DifferentAssetTypeAndVersion_Has_DifferentAnalysisFingerprint)
|
|
{
|
|
AZ::Uuid uuid1 = AZ::Uuid::CreateRandom();
|
|
AZ::Uuid uuid2 = AZ::Uuid::CreateRandom();
|
|
AZStd::string analysisFingerprint1 = BuildFingerprint(1, uuid1);
|
|
AZStd::string analysisFingerprint2 = BuildFingerprint(2, uuid2);
|
|
EXPECT_STRNE(analysisFingerprint1.c_str(), analysisFingerprint2.c_str());
|
|
}
|
|
|
|
TEST_F(RCBuilderFingerprintTest, SameVersionAndSameType_Has_SameAnalysisFingerprint)
|
|
{
|
|
AZ::Uuid uuid1 = AZ::Uuid::CreateRandom();
|
|
AZStd::string analysisFingerprint1 = BuildFingerprint(1, uuid1);
|
|
AZStd::string analysisFingerprint2 = BuildFingerprint(1, uuid1);
|
|
EXPECT_STREQ(analysisFingerprint1.c_str(), analysisFingerprint2.c_str());
|
|
}
|
|
|