1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
/************************************************************************
*
* Copyright (C) 2023-2024 IRCAD France
*
* This file is part of Sight.
*
* Sight is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Sight is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Sight. If not, see <https://www.gnu.org/licenses/>.
*
***********************************************************************/
#pragma once
#include <sight/ui/test/config.hpp>
#include <ui/test/tester.hpp>
#include <string>
#include <variant>
namespace sight::ui::test::helper
{
class selector
{
public:
enum class type
{
from_main,
from_dialog,
from_parent,
from_current,
current,
dialog
};
using Data = std::variant<std::string, std::pair<std::string, std::string> >;
/**
* Implicit constructor from a string. Equivalent to selector::fromMain. @see fromMain
*
* @param _object_name The objectName of the object to be selected
*
* @{
*/
SIGHT_UI_TEST_API selector(const char* _object_name);
SIGHT_UI_TEST_API selector(const std::string& _object_name);
/// @}
/**
* Create a selector to select an object from the main window.
*
* @param _object_name The objectName of the object to be selected
*/
SIGHT_UI_TEST_API static selector from_main(const std::string& _object_name);
/**
* Create a selector to select an object from the current dialog window.
*
* @param _object_name The objectName of the object to be selected
*/
SIGHT_UI_TEST_API static selector from_dialog(const std::string& _object_name);
/**
* Create a selector to select an object via its parent.
*
* @param _parent_name The objectName of the parent of the object to be selected
* @param _child_name The objectName of the object to be selected
*/
SIGHT_UI_TEST_API static selector from_parent(const std::string& _parent_name, const std::string& _child_name);
/**
* Create a selector to select an object via the current graphic component.
*
* @param _object_name The objectName of the object to be selected
*/
SIGHT_UI_TEST_API static selector from_current(const std::string& _object_name);
/**
* Create a selector to select the current component graphic component.
*/
SIGHT_UI_TEST_API static selector current();
/**
* Create a selector to select the current dialog window.
*/
SIGHT_UI_TEST_API static selector dialog();
/**
* Sets the timeout associated with the selection.
*
* @param _timeout Timeout in milliseconds
*
* @returns A copy of this
*/
SIGHT_UI_TEST_API selector with_timeout(int _timeout) const;
/**
* Adds a new condition for the object to meet
*
* @param _condition A condition for the object to meet
*
* @returns A copy of this
*/
SIGHT_UI_TEST_API selector with_condition(std::function<bool(QObject*)> _condition) const;
/**
* selects the desired object.
*
* @param _tester The current tester
*
* @post The current tester's current graphic component is the desired object if it was found.
*/
SIGHT_UI_TEST_API void select(tester& _tester) const;
/**
* Returns the description of the object
*
* @param _tester The current tester
*
* @returns The description of the object
*/
SIGHT_UI_TEST_API std::string get_description(const tester& _tester) const;
//------------------------------------------------------------------------------
SIGHT_UI_TEST_API enum type type() const
{
return m_type;
}
//------------------------------------------------------------------------------
SIGHT_UI_TEST_API Data data() const
{
return m_data;
}
private:
selector(enum type _type, Data _data);
enum type m_type;
Data m_data;
int m_timeout = tester::DEFAULT_TIMEOUT;
std::vector<std::function<bool(QObject*)> > m_conditions;
};
} // namespace sight::ui
|