ScriptCanvasTestNodes.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  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 <ScriptCanvas/Core/Node.h>
  10. #include <ScriptCanvas/Core/Contracts/DisallowReentrantExecutionContract.h>
  11. namespace TestNodes
  12. {
  13. //////////////////////////////////////////////////////////////////////////////
  14. // TestResult node, prints a string to the console.
  15. class TestResult
  16. : public ScriptCanvas::Node
  17. {
  18. public:
  19. AZ_COMPONENT(TestResult, "{085CBDD3-D4E0-44D4-BF68-8732E35B9DF1}", ScriptCanvas::Node);
  20. static void Reflect(AZ::ReflectContext* context);
  21. // really only used for unit testing
  22. AZ_INLINE void SetText(const ScriptCanvas::Data::StringType& text) { m_string = text; }
  23. AZ_INLINE const ScriptCanvas::Data::StringType& GetText() const { return m_string; }
  24. void MarkDefaultableInput() override {}
  25. protected:
  26. void OnInit() override;
  27. private:
  28. ScriptCanvas::Data::StringType m_string;
  29. };
  30. //////////////////////////////////////////////////////////////////////////////
  31. // ContractNode - used to test contract evaluation.
  32. class ContractNode : public ScriptCanvas::Node
  33. {
  34. public:
  35. AZ_COMPONENT(ContractNode, "{76A17F4F-F508-4C20-83A0-0125468946C7}", ScriptCanvas::Node);
  36. static void Reflect(AZ::ReflectContext* reflection);
  37. void OnInit() override;
  38. };
  39. //////////////////////////////////////////////////////////////////////////////
  40. class InfiniteLoopNode
  41. : public ScriptCanvas::Node
  42. {
  43. public:
  44. AZ_COMPONENT(InfiniteLoopNode, "{709A78D5-3449-4E94-B751-C68AC6385749}", Node);
  45. static void Reflect(AZ::ReflectContext* reflection);
  46. protected:
  47. void OnInit() override;
  48. };
  49. //////////////////////////////////////////////////////////////////////////////
  50. class UnitTestErrorNode
  51. : public ScriptCanvas::Node
  52. {
  53. public:
  54. AZ_COMPONENT(UnitTestErrorNode, "{6A3E9EAD-F84B-4474-90B6-C3334DA669C2}", Node);
  55. static void Reflect(AZ::ReflectContext* reflection);
  56. protected:
  57. void OnInit() override;
  58. };
  59. //////////////////////////////////////////////////////////////////////////////
  60. class AddNodeWithRemoveSlot
  61. : public ScriptCanvas::Node
  62. {
  63. public:
  64. AZ_COMPONENT(AddNodeWithRemoveSlot, "{DE04D042-745F-4384-8B62-D6EE36321EFC}", ScriptCanvas::Node);
  65. static void Reflect(AZ::ReflectContext* reflection);
  66. ScriptCanvas::SlotId AddSlot(AZStd::string_view slotName);
  67. bool RemoveSlot(const ScriptCanvas::SlotId& slotId, bool emitWarning = true);
  68. protected:
  69. void OnInit() override;
  70. AZStd::vector<ScriptCanvas::SlotId> m_dynamicSlotIds;
  71. ScriptCanvas::SlotId m_resultSlotId;
  72. };
  73. //////////////////////////////////////////////////////////////////////////////
  74. class StringView
  75. : public ScriptCanvas::Node
  76. {
  77. public:
  78. AZ_COMPONENT(StringView, "{F47ACD24-79EB-4DBE-B325-8B9DB0839A75}", ScriptCanvas::Node);
  79. protected:
  80. void OnInit() override;
  81. public:
  82. static void Reflect(AZ::ReflectContext* context);
  83. private:
  84. ScriptCanvas::SlotId m_resultSlotId;
  85. };
  86. //////////////////////////////////////////////////////////////////////////////
  87. class InsertSlotConcatNode
  88. : public ScriptCanvas::Node
  89. {
  90. public:
  91. AZ_COMPONENT(InsertSlotConcatNode, "{445313E7-D0A5-4D73-B674-6FA37EFFF5C8}", ScriptCanvas::Node);
  92. static void Reflect(AZ::ReflectContext* reflection);
  93. ScriptCanvas::SlotId InsertSlot(AZ::s64 index, AZStd::string_view slotName);
  94. protected:
  95. void OnInit() override;
  96. };
  97. //////////////////////////////////////////////////////////////////////////////
  98. class ConfigurableUnitTestNode
  99. : public ScriptCanvas::Node
  100. {
  101. public:
  102. AZ_COMPONENT(ConfigurableUnitTestNode, "{61BF3D66-809A-4AAE-B20A-DFA2B51BE4EE}", ScriptCanvas::Node);
  103. static void Reflect(AZ::ReflectContext* reflection);
  104. ScriptCanvas::Slot* AddTestingSlot(const ScriptCanvas::SlotConfiguration& slotConfiguration);
  105. ScriptCanvas::Slot* InsertTestingSlot(int index, const ScriptCanvas::SlotConfiguration& slotConfiguration);
  106. AZStd::vector< const ScriptCanvas::Slot* > FindSlotsByDescriptor(const ScriptCanvas::SlotDescriptor& slotDescriptor) const;
  107. void TestClearDisplayType(const AZ::Crc32& dynamicGroup);
  108. void TestSetDisplayType(const AZ::Crc32& dynamicGroup, const ScriptCanvas::Data::Type& dataType);
  109. bool TestHasConcreteDisplayType(const AZ::Crc32& dynamicGroup) const;
  110. bool TestIsSlotConnectedToConcreteDisplayType(const ScriptCanvas::Slot& slot, ExploredDynamicGroupCache& exploredGroupCache) const;
  111. void SetSlotExecutionMap(ScriptCanvas::SlotExecution::Map* executionMap);
  112. const ScriptCanvas::SlotExecution::Map* GetSlotExecutionMap() const override;
  113. private:
  114. ScriptCanvas::SlotExecution::Map* m_slotExecutionMap = nullptr;
  115. };
  116. }