AdapterBuilderTests.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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 <Tests/DocumentPropertyEditor/DocumentPropertyEditorFixture.h>
  9. #include <AzFramework/DocumentPropertyEditor/AdapterBuilder.h>
  10. #include <AzFramework/DocumentPropertyEditor/PropertyEditorNodes.h>
  11. #include <AzCore/DOM/DomUtils.h>
  12. #include <AzCore/std/any.h>
  13. namespace AZ::DocumentPropertyEditor::Tests
  14. {
  15. using AdapterBuilderDpeTests = DocumentPropertyEditorTestFixture;
  16. TEST_F(AdapterBuilderDpeTests, VisitSimpleStructure)
  17. {
  18. AdapterBuilder builder;
  19. builder.BeginAdapter();
  20. builder.BeginRow();
  21. builder.Label("label");
  22. builder.BeginPropertyEditor("TextEditor", Dom::Value("lorem ipsum", true));
  23. builder.Attribute(AZ::Name("attr"), Dom::Value(2));
  24. builder.EndPropertyEditor();
  25. builder.EndRow();
  26. builder.EndAdapter();
  27. Dom::Value domFromBuilder = builder.FinishAndTakeResult();
  28. /**
  29. Expect the following structure:
  30. <Adapter>
  31. <Row>
  32. <Label Value="label"/>
  33. <PropertyEditor type="TextEditor" attr=2 Value="lorem ipsum"/>
  34. </Row>
  35. </Adapter>
  36. */
  37. Dom::Value expectedDom = Dom::Value::CreateNode(Nodes::Adapter::Name);
  38. Dom::Value row = Dom::Value::CreateNode(Nodes::Row::Name);
  39. Dom::Value label = Dom::Value::CreateNode(Nodes::Label::Name);
  40. label[Nodes::Label::Value.GetName()] = Dom::Value("label", true);
  41. row.ArrayPushBack(label);
  42. Dom::Value editor = Dom::Value::CreateNode(Nodes::PropertyEditor::Name);
  43. editor[Nodes::PropertyEditor::Type.GetName()] = Dom::Value("TextEditor", true);
  44. editor["attr"] = 2;
  45. editor[Nodes::PropertyEditor::Value.GetName()] = Dom::Value("lorem ipsum", true);
  46. row.ArrayPushBack(editor);
  47. expectedDom.ArrayPushBack(row);
  48. EXPECT_TRUE(Dom::Utils::DeepCompareIsEqual(expectedDom, domFromBuilder));
  49. }
  50. TEST_F(AdapterBuilderDpeTests, VisitNestedRows)
  51. {
  52. AdapterBuilder builder;
  53. builder.BeginAdapter();
  54. Dom::Value expectedDom = Dom::Value::CreateNode(Nodes::Adapter::Name);
  55. for (int i = 0; i < 2; ++i)
  56. {
  57. builder.BeginRow();
  58. Dom::Value ri = Dom::Value::CreateNode(Nodes::Row::Name);
  59. for (int j = 0; j < 2; ++j)
  60. {
  61. builder.BeginRow();
  62. Dom::Value rj = Dom::Value::CreateNode(Nodes::Row::Name);
  63. for (int k = 0; k < 3; ++k)
  64. {
  65. builder.BeginRow();
  66. Dom::Value rk = Dom::Value::CreateNode(Nodes::Row::Name);
  67. rj.ArrayPushBack(rk);
  68. builder.EndRow();
  69. }
  70. ri.ArrayPushBack(rj);
  71. builder.EndRow();
  72. }
  73. expectedDom.ArrayPushBack(ri);
  74. builder.EndRow();
  75. }
  76. builder.EndAdapter();
  77. /**
  78. Expect the following structure:
  79. <Adapter>
  80. <Row>
  81. <Row>
  82. <Row />
  83. <Row />
  84. <Row />
  85. </Row>
  86. <Row>
  87. <Row />
  88. <Row />
  89. <Row />
  90. </Row>
  91. </Row>
  92. <Row>
  93. <Row>
  94. <Row />
  95. <Row />
  96. <Row />
  97. </Row>
  98. <Row>
  99. <Row />
  100. <Row />
  101. <Row />
  102. </Row>
  103. </Row>
  104. </Adapter>
  105. */
  106. Dom::Value domFromBuilder = builder.FinishAndTakeResult();
  107. EXPECT_TRUE(Dom::Utils::DeepCompareIsEqual(expectedDom, domFromBuilder));
  108. }
  109. }