GenAppDescriptors.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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 <AzCore/IO/FileIO.h>
  9. #include <AzCore/Serialization/SerializeContext.h>
  10. #include <AzCore/Serialization/ObjectStream.h>
  11. #include <AzCore/UnitTest/TestTypes.h>
  12. #include <AzTest/Utils.h>
  13. #include <AzFramework/Application/Application.h>
  14. namespace UnitTest
  15. {
  16. class GenAppDescriptors
  17. : public AllocatorsTestFixture
  18. {
  19. public:
  20. void FakePopulateModules(AZ::ComponentApplication::Descriptor& desc, const char* libSuffix)
  21. {
  22. static const char* modules[] =
  23. {
  24. "LySystemModule",
  25. };
  26. if (desc.m_modules.empty())
  27. {
  28. for (const char* module : modules)
  29. {
  30. desc.m_modules.push_back();
  31. desc.m_modules.back().m_dynamicLibraryPath = module;
  32. desc.m_modules.back().m_dynamicLibraryPath += libSuffix;
  33. }
  34. }
  35. }
  36. };
  37. TEST_F(GenAppDescriptors, WriteDescriptor_ToXML_Succeeds)
  38. {
  39. struct Config
  40. {
  41. const char* platformName;
  42. const char* configName;
  43. const char* libSuffix;
  44. };
  45. AzFramework::Application app;
  46. AZ::SerializeContext serializeContext;
  47. AZ::ComponentApplication::Descriptor::Reflect(&serializeContext, &app);
  48. AZ::Entity::Reflect(&serializeContext);
  49. AZ::DynamicModuleDescriptor::Reflect(&serializeContext);
  50. AZ::Entity dummySystemEntity(AZ::SystemEntityId, "SystemEntity");
  51. const Config config = {"Platform", "Config", "libSuffix"};
  52. AZ::ComponentApplication::Descriptor descriptor;
  53. if (config.libSuffix && config.libSuffix[0])
  54. {
  55. FakePopulateModules(descriptor, config.libSuffix);
  56. }
  57. AZ::Test::ScopedAutoTempDirectory tempDirectory;
  58. const auto filename = AZ::IO::Path(tempDirectory.GetDirectory()) /
  59. AZStd::string::format("LYConfig_%s%s.xml", config.platformName, config.configName);
  60. AZ::IO::FileIOStream stream(filename.c_str(), AZ::IO::OpenMode::ModeWrite);
  61. auto objStream = AZ::ObjectStream::Create(&stream, serializeContext, AZ::ObjectStream::ST_XML);
  62. const bool descWriteOk = objStream->WriteClass(&descriptor);
  63. EXPECT_TRUE(descWriteOk) << "Failed to write memory descriptor to application descriptor file " << filename.c_str() << "!";
  64. const bool entityWriteOk = objStream->WriteClass(&dummySystemEntity);
  65. EXPECT_TRUE(entityWriteOk) << "Failed to write system entity to application descriptor file " << filename.c_str() << "!";
  66. const bool flushOk = objStream->Finalize();
  67. EXPECT_TRUE(flushOk) << "Failed finalizing application descriptor file " << filename.c_str() << "!";
  68. }
  69. }