You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Gems/ScriptCanvasDeveloper/Code/Editor/Source/EditorAutomationTests/NodeCreationTests.h

178 lines
7.4 KiB
C++

/*
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
* its licensors.
*
* For complete copyright and license terms please see the LICENSE at the root of this
* distribution (the "License"). All use of this software is governed by the License,
* or, if provided, by the license below or the license accompanying this file. Do not
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
*/
#pragma once
#include <QLineEdit>
#include <QMenu>
#include <QString>
#include <GraphCanvas/Components/Nodes/NodeBus.h>
#include <GraphCanvas/Components/SceneBus.h>
#include <GraphCanvas/Components/Slots/SlotBus.h>
#include <GraphCanvas/Components/VisualBus.h>
#include <GraphCanvas/Utils/ConversionUtils.h>
#include <ScriptCanvas/Bus/RequestBus.h>
#include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationTest.h>
#include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationStates/ConnectionStates.h>
#include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationStates/CreateElementsStates.h>
#include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationStates/EditorViewStates.h>
#include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationStates/ElementInteractionStates.h>
#include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationStates/GraphStates.h>
#include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationStates/UtilityStates.h>
#include <ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationStates/VariableStates.h>
namespace ScriptCanvasDeveloper
{
/**
EditorautomationTest that creates a node from the node palette using drag/drop
*/
class CreateNodeFromPaletteTest
: public EditorAutomationTest
{
public:
CreateNodeFromPaletteTest(const AZStd::string& nodeName, GraphCanvas::NodePaletteWidget* paletteWidget)
: EditorAutomationTest(AZStd::string::format("Create %s from Node Palette", nodeName.c_str()).c_str())
{
AutomationStateModelId viewCenterModelId = "ViewCenter";
AddState(new CreateRuntimeGraphState());
AddState(new FindViewCenterState(viewCenterModelId));
AddState(new CreateNodeFromPaletteState(paletteWidget, nodeName.c_str(), CreateNodeFromPaletteState::CreationType::ScenePosition, viewCenterModelId));
AddState(new ForceCloseActiveGraphState());
}
};
/**
EditorautomationTest that creates a node from the context menu
*/
class CreateNodeFromContextMenuTest
: public EditorAutomationTest
{
public:
CreateNodeFromContextMenuTest(const AZStd::string& nodeName)
: EditorAutomationTest(AZStd::string::format("Create %s from Context Menu", nodeName.c_str()).c_str())
{
AutomationStateModelId viewCenterModelId = "ViewCenter";
AddState(new CreateRuntimeGraphState());
AddState(new FindViewCenterState(viewCenterModelId));
AddState(new CreateNodeFromContextMenuState(nodeName.c_str(), CreateNodeFromContextMenuState::CreationType::ScenePosition, viewCenterModelId));
AddState(new ForceCloseActiveGraphState());
}
};
/**
EditorautomationTest that creates a simple graph from the node palette and coupling.
*/
class CreateHelloWorldFromPalette
: public EditorAutomationTest
{
public:
CreateHelloWorldFromPalette(GraphCanvas::NodePaletteWidget* paletteWidget)
: EditorAutomationTest("Create Hello World From Palette")
{
AddState(new CreateRuntimeGraphState());
AutomationStateModelId onGraphStartTargetPointId = "OnGraphStartScenePoint";
AutomationStateModelId onGraphStartId = "OnGraphStartId";
AddState(new FindViewCenterState(onGraphStartTargetPointId));
AddState(new CreateNodeFromPaletteState(paletteWidget, "On Graph Start", CreateNodeFromPaletteState::CreationType::ScenePosition, onGraphStartTargetPointId, onGraphStartId));
AutomationStateModelId printTargetPoint = "PrintScenePoint";
AutomationStateModelId printId = "PrintId";
FindPositionOffsets offsets;
offsets.m_horizontalPosition = 1;
offsets.m_horizontalOffset = 50;
AddState(new FindNodePosition(onGraphStartId, printTargetPoint, offsets));
AddState(new CreateNodeFromPaletteState(paletteWidget, "Print", CreateNodeFromPaletteState::CreationType::ScenePosition, printTargetPoint, printId));
AddState(new CoupleNodesState(onGraphStartId, GraphCanvas::ConnectionType::CT_Output, printId));
AddState(new ForceCloseActiveGraphState());
}
};
/**
EditorautomationTest that creates a simple graph from the context menu and coupling.
*/
class CreateHelloWorldFromContextMenu
: public EditorAutomationTest
{
public:
CreateHelloWorldFromContextMenu()
: EditorAutomationTest("Create Hello World From Context Menu")
{
AddState(new CreateRuntimeGraphState());
AutomationStateModelId onGraphStartTargetPointId = "OnGraphStartScenePoint";
AutomationStateModelId onGraphStartId = "OnGraphStartId";
AddState(new FindViewCenterState(onGraphStartTargetPointId));
AddState(new CreateNodeFromContextMenuState("On Graph Start", CreateNodeFromContextMenuState::CreationType::ScenePosition, onGraphStartTargetPointId, onGraphStartId));
AutomationStateModelId printTargetPoint = "PrintScenePoint";
AutomationStateModelId printId = "PrintId";
FindPositionOffsets offsets;
offsets.m_horizontalPosition = 1;
offsets.m_horizontalOffset = 50;
AddState(new FindNodePosition(onGraphStartId, printTargetPoint, offsets));
AddState(new CreateNodeFromContextMenuState("Print", CreateNodeFromContextMenuState::CreationType::ScenePosition, printTargetPoint, printId));
AddState(new CoupleNodesState(onGraphStartId, GraphCanvas::ConnectionType::CT_Output, printId));
AddState(new ForceCloseActiveGraphState());
}
};
/**
EditorautomationTest that creates all of the nodes under the specified category
*/
class CreateCategoryTest
: public EditorAutomationTest
{
public:
CreateCategoryTest(AZStd::string categoryString, GraphCanvas::NodePaletteWidget* nodePaletteWidget);
~CreateCategoryTest() override = default;
};
/**
EditorautomationTest that will splice the specified node onto a simple graph using execution connections and the context menu
*/
class CreateExecutionSplicedNodeTest
: public EditorAutomationTest
{
public:
CreateExecutionSplicedNodeTest(QString nodeName);
~CreateExecutionSplicedNodeTest() override = default;
};
/**
EditorautomationTest that will splice the specified node onto a simple graph using execution connections and dragging/dropping
*/
class CreateDragDropExecutionSpliceNodeTest
: public EditorAutomationTest
{
public:
CreateDragDropExecutionSpliceNodeTest(GraphCanvas::NodePaletteWidget* nodePaletteWidget, QString nodeName);
~CreateDragDropExecutionSpliceNodeTest() override = default;
};
}