JobProductTests.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <AzTest/AzTest.h>
  9. #include <AzCore/Debug/TraceMessageBus.h>
  10. #include <AssetBuilderSDK/AssetBuilderSDK.h>
  11. #include <AzCore/UnitTest/UnitTest.h>
  12. #include "assetBuilderSDKTest.h"
  13. namespace AssetProcessorTests
  14. {
  15. class JobOutputTests
  16. : public AssetProcessor::AssetBuilderSDKTest
  17. , public UnitTest::TraceBusRedirector
  18. {
  19. protected:
  20. void SetUp() override
  21. {
  22. AssetProcessor::AssetBuilderSDKTest::SetUp();
  23. AZ::Debug::TraceMessageBus::Handler::BusConnect();
  24. m_productFile1 = AZStd::make_unique<AZStd::string>();
  25. m_productFile2 = AZStd::make_unique<AZStd::string>();
  26. }
  27. void TearDown() override
  28. {
  29. m_productFile1.reset();
  30. m_productFile2.reset();
  31. AZ::Debug::TraceMessageBus::Handler::BusDisconnect();
  32. AssetProcessor::AssetBuilderSDKTest::TearDown();
  33. }
  34. bool OnError([[maybe_unused]] const char* window, const char* message) override
  35. {
  36. if (!m_productFile1->empty() && !m_productFile1->empty())
  37. {
  38. // filter out expected errors
  39. AZStd::string incoming {message};
  40. if (incoming.find(m_productFile1->c_str()) != AZStd::string::npos &&
  41. incoming.find(m_productFile2->c_str()) != AZStd::string::npos )
  42. {
  43. return true;
  44. }
  45. }
  46. if (UnitTest::TestRunner::Instance().m_isAssertTest)
  47. {
  48. UnitTest::TestRunner::Instance().ProcessAssert(message, __FILE__, __LINE__, UnitTest::AssertionExpr(false));
  49. return true;
  50. }
  51. else if (UnitTest::TestRunner::Instance().m_suppressErrors)
  52. {
  53. GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure);
  54. return true;
  55. }
  56. return false;
  57. }
  58. AZStd::unique_ptr<AZStd::string> m_productFile1;
  59. AZStd::unique_ptr<AZStd::string> m_productFile2;
  60. };
  61. TEST_F(JobOutputTests, JobProduct_DifferentSubIds_Works)
  62. {
  63. AssetBuilderSDK::ProcessJobResponse processJobResponse;
  64. processJobResponse.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
  65. {
  66. AssetBuilderSDK::JobProduct jobProduct;
  67. jobProduct.m_productSubID = 279033426;
  68. jobProduct.m_productFileName = "default_Boxes_F2724FB9_F0D2_5BEB_B6C8_2162A1FF281F__lod0.azlod";
  69. jobProduct.m_productAssetType = AZ::Data::AssetType::CreateString("{65B5A801-B9B9-4160-9CB4-D40DAA50B15C}");
  70. processJobResponse.m_outputProducts.emplace_back(jobProduct);
  71. }
  72. {
  73. AssetBuilderSDK::JobProduct jobProduct;
  74. jobProduct.m_productSubID = 1;
  75. jobProduct.m_productFileName = "default_Boxes_B1C126EF_C4D4_522C_864B_0FE3684F7CA1__lod0_TANGENT0.azbuffer";
  76. jobProduct.m_productAssetType = AZ::Data::AssetType::CreateString("{F6C5EA8A-1DB3-456E-B970-B6E2AB262AED}");
  77. processJobResponse.m_outputProducts.emplace_back(jobProduct);
  78. }
  79. EXPECT_TRUE(processJobResponse.Succeeded());
  80. EXPECT_TRUE(processJobResponse.ReportProductCollisions());
  81. }
  82. TEST_F(JobOutputTests, JobProduct_SubIdsWithCollisions_Detected)
  83. {
  84. AssetBuilderSDK::ProcessJobResponse processJobResponse;
  85. processJobResponse.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
  86. *m_productFile2 = "default_Boxes_B1C126EF_C4D4_522C_864B_0FE3684F7CA1__lod0_TANGENT0.azbuffer";
  87. *m_productFile1 = "default_Boxes_F2724FB9_F0D2_5BEB_B6C8_2162A1FF281F__lod0.azlod";
  88. {
  89. AssetBuilderSDK::JobProduct jobProduct;
  90. jobProduct.m_productSubID = 279033426;
  91. jobProduct.m_productFileName = *m_productFile2;
  92. jobProduct.m_productAssetType = AZ::Data::AssetType::CreateString("{F6C5EA8A-1DB3-456E-B970-B6E2AB262AED}");
  93. processJobResponse.m_outputProducts.emplace_back(jobProduct);
  94. }
  95. {
  96. AssetBuilderSDK::JobProduct jobProduct;
  97. jobProduct.m_productSubID = 279033426;
  98. jobProduct.m_productFileName = *m_productFile1;
  99. jobProduct.m_productAssetType = AZ::Data::AssetType::CreateString("{65B5A801-B9B9-4160-9CB4-D40DAA50B15C}");
  100. processJobResponse.m_outputProducts.emplace_back(jobProduct);
  101. }
  102. EXPECT_TRUE(processJobResponse.Succeeded());
  103. EXPECT_FALSE(processJobResponse.ReportProductCollisions());
  104. }
  105. }