EditorAutomationTests.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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. #pragma once
  9. #include <QLineEdit>
  10. #include <QMenu>
  11. #include <QString>
  12. #include <GraphCanvas/Components/Nodes/NodeBus.h>
  13. #include <GraphCanvas/Components/SceneBus.h>
  14. #include <GraphCanvas/Components/Slots/SlotBus.h>
  15. #include <GraphCanvas/Components/VisualBus.h>
  16. #include <GraphCanvas/Utils/ConversionUtils.h>
  17. #include <ScriptCanvas/Bus/RequestBus.h>
  18. #include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationTest.h>
  19. #include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationActions/EditorMouseActions.h>
  20. #include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationActions/EditorKeyActions.h>
  21. #include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationActions/WidgetActions.h>
  22. #include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationActions/ScriptCanvasActions/ConnectionActions.h>
  23. #include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationActions/ScriptCanvasActions/CreateElementsActions.h>
  24. #include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationActions/ScriptCanvasActions/EditorViewActions.h>
  25. #include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationActions/ScriptCanvasActions/ElementInteractions.h>
  26. #include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationActions/ScriptCanvasActions/GraphActions.h>
  27. #include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationActions/ScriptCanvasActions/VariableActions.h>
  28. namespace ScriptCanvas::Developer
  29. {
  30. DefineStateId(OpenMenuTest_OpenMenuState);
  31. /**
  32. EditorAutomationTest to test the general systems. Will open the Developer menu.
  33. */
  34. class OpenMenuTest
  35. : public EditorAutomationTest
  36. {
  37. class OpenMenuState : public StaticIdAutomationState<OpenMenuTest_OpenMenuStateId>
  38. {
  39. public:
  40. AZ_CLASS_ALLOCATOR(OpenMenuState, AZ::SystemAllocator)
  41. OpenMenuState(QMenu* targetMenu)
  42. : m_targetMenu(targetMenu)
  43. {
  44. }
  45. protected:
  46. void OnSetupStateActions(EditorAutomationActionRunner& actionRunner)
  47. {
  48. m_shownMenu = false;
  49. if (m_clickAction == nullptr)
  50. {
  51. QPoint targetPoint = m_targetMenu->mapToGlobal(QPoint(15, -10));
  52. m_clickAction = aznew MouseClickAction(Qt::MouseButton::LeftButton, targetPoint);
  53. actionRunner.AddAction(m_clickAction);
  54. }
  55. actionRunner.AddAction(&m_delayAction);
  56. m_eventConnection = QObject::connect(m_targetMenu, &QMenu::aboutToShow, [this]()
  57. {
  58. this->OnTargetMenuShown();
  59. });
  60. }
  61. void OnStateActionsComplete()
  62. {
  63. QObject::disconnect(m_eventConnection);
  64. if (!m_shownMenu)
  65. {
  66. ReportError("Failed to show the menu");
  67. }
  68. delete m_clickAction;
  69. m_clickAction = nullptr;
  70. }
  71. void OnTargetMenuShown()
  72. {
  73. m_shownMenu = true;
  74. }
  75. private:
  76. QMenu* m_targetMenu;
  77. MouseClickAction* m_clickAction = nullptr;
  78. DelayAction m_delayAction;
  79. QMetaObject::Connection m_eventConnection;
  80. bool m_shownMenu = false;
  81. };
  82. public:
  83. OpenMenuTest(QMenu* targetMenu)
  84. : EditorAutomationTest("Open Menu Test")
  85. {
  86. AddState(new OpenMenuState(targetMenu));
  87. }
  88. ~OpenMenuTest() = default;
  89. };
  90. DefineStateId(WriteToLineEditState);
  91. class WriteToLineEditState : public StaticIdAutomationState<WriteToLineEditStateId>
  92. {
  93. public:
  94. AZ_CLASS_ALLOCATOR(WriteToLineEditState, AZ::SystemAllocator)
  95. WriteToLineEditState(QLineEdit* targetEdit, QString targetText)
  96. : m_writeToLineEdit(targetEdit, targetText)
  97. {
  98. }
  99. protected:
  100. void OnSetupStateActions(EditorAutomationActionRunner& actionRunner)
  101. {
  102. actionRunner.AddAction(&m_writeToLineEdit);
  103. }
  104. private:
  105. WriteToLineEditAction m_writeToLineEdit;
  106. };
  107. /**
  108. EditorAutomationTest to test the general systems. Will write the target string to the target line edit
  109. */
  110. class WriteTextToInput
  111. : public EditorAutomationTest
  112. {
  113. public:
  114. WriteTextToInput(QLineEdit* targetEdit, QString targetText)
  115. : EditorAutomationTest(QString("Write '%1' To Input").arg(targetText))
  116. {
  117. AddState(new WriteToLineEditState(targetEdit, targetText));
  118. }
  119. ~WriteTextToInput() = default;
  120. };
  121. }