Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions example/qt/cpp_test/test_manage_todo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,17 @@ static suite<"integration manage todo"> _ = [] { // NOLINT
probe.wait_for_connected(std::chrono::seconds{5});
steps.scenario("*") = [&] {};
steps.when("I have entered '{todoText}' into the todo input field") = [&](std::string todoText) {
auto input_obj =
probe.find_object(quite::make_query().with_property("objectName", std::string{"inputField"}));
auto input_obj = probe.find_object(quite::query().property("objectName", std::string{"inputField"}));
input_obj.property("text").write(std::move(todoText));
};
steps.when("I click the 'Add' button") = [&]() {
auto btn_query = quite::make_query().with_property("objectName", std::string{"addButton"});
auto btn_query = quite::query().property("objectName", std::string{"addButton"});
auto btn_obj = probe.find_object(btn_query);
btn_obj.mouse_action();
};

steps.then("the todo list should display '{expectedTodoText}' as a new item") = [&](std::string todoText) {
auto delegate_query = quite::make_query().with_property("text", todoText).with_type("SwipeDelegate");
auto delegate_query = quite::query().property("text", todoText).type("SwipeDelegate");
auto delegate_text = probe.try_find_object(delegate_query, std::chrono::seconds{2}).property("text");
expect(std::holds_alternative<std::string>(delegate_text.value()));
expect(that % todoText == std::get<std::string>(delegate_text.value()));
Expand Down
12 changes: 5 additions & 7 deletions example/qt/python_test/test_manage_todo.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import test_paths
from pytest_bdd import parsers, scenario, then, when

from quite import Probe, ProbeManager, make_query
from quite import Probe, ProbeManager, query


@pytest.fixture
Expand All @@ -29,15 +29,15 @@ def test_add_todo():
@when(parsers.parse("I have entered '{todo_text}' into the todo input field"))
def enter_todo_text(application: Probe, todo_text: str):
input_field = application.find_object(
object_query=make_query().with_property("objectName", "inputField")
object_query=query().property("objectName", "inputField")
)
input_field.property("text").write(todo_text)


@when("I click the 'Add' button")
def click_add_button(application: Probe):
button = application.find_object(
object_query=make_query().with_property("objectName", "addButton")
object_query=query().property("objectName", "addButton")
)
button.mouse_action()

Expand All @@ -47,13 +47,11 @@ def click_add_button(application: Probe):
)
def verify_new_todo_exists(application: Probe, expected_todo_text: str):
list_item = application.find_object(
object_query=make_query().with_property("objectName", "listView")
object_query=query().property("objectName", "listView")
)
new_item_index = list_item.property("count").value() - 1
todo_list_item = application.try_find_object(
object_query=make_query()
.with_property("index", new_item_index)
.with_type("SwipeDelegate"),
object_query=query().property("index", new_item_index).type("SwipeDelegate"),
timeout=timedelta(seconds=1),
)
assert todo_list_item.property("text").value() == expected_todo_text
18 changes: 9 additions & 9 deletions libs/core/include/quite/value/object_query.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,21 @@ class QUITE_CORE_EXPORT ObjectQueryBuilder
public:
ObjectQueryBuilder();

ObjectQueryBuilder &with_property(std::initializer_list<std::pair<std::string, entt::meta_any>> props);
ObjectQueryBuilder &property(std::initializer_list<std::pair<std::string, entt::meta_any>> props);

ObjectQueryBuilder &with_property(std::string key, std::int64_t value);
ObjectQueryBuilder &property(std::string key, std::int64_t value);

ObjectQueryBuilder &with_property(std::string key, std::uint64_t value);
ObjectQueryBuilder &property(std::string key, std::uint64_t value);

ObjectQueryBuilder &with_property(std::string key, double value);
ObjectQueryBuilder &property(std::string key, double value);

ObjectQueryBuilder &with_property(std::string key, bool value);
ObjectQueryBuilder &property(std::string key, bool value);

ObjectQueryBuilder &with_property(std::string key, std::string value);
ObjectQueryBuilder &property(std::string key, std::string value);

ObjectQueryBuilder &with_parent(ObjectQueryBuilder parent);
ObjectQueryBuilder &parent(ObjectQueryBuilder parent);

ObjectQueryBuilder &with_type(std::string type_name);
ObjectQueryBuilder &type(std::string type_name);

operator std::shared_ptr<ObjectQuery>() const;

Expand All @@ -57,7 +57,7 @@ class QUITE_CORE_EXPORT ObjectQueryBuilder
};

// Factory function
QUITE_CORE_EXPORT ObjectQueryBuilder make_query();
QUITE_CORE_EXPORT ObjectQueryBuilder query();

} // namespace quite
template <>
Expand Down
19 changes: 9 additions & 10 deletions libs/core/src/value/object_query.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ ObjectQueryBuilder::ObjectQueryBuilder()
: query_(std::make_shared<ObjectQuery>())
{}

ObjectQueryBuilder &ObjectQueryBuilder::with_property(
std::initializer_list<std::pair<std::string, entt::meta_any>> props)
ObjectQueryBuilder &ObjectQueryBuilder::property(std::initializer_list<std::pair<std::string, entt::meta_any>> props)
{
for (const auto &[key, val] : props)
{
Expand All @@ -22,43 +21,43 @@ ObjectQueryBuilder &ObjectQueryBuilder::with_property(
return *this;
}

ObjectQueryBuilder &ObjectQueryBuilder::with_property(std::string key, std::int64_t value)
ObjectQueryBuilder &ObjectQueryBuilder::property(std::string key, std::int64_t value)
{
query_->properties.insert_or_assign(std::move(key), std::move(value));
return *this;
}

ObjectQueryBuilder &ObjectQueryBuilder::with_property(std::string key, std::uint64_t value)
ObjectQueryBuilder &ObjectQueryBuilder::property(std::string key, std::uint64_t value)
{
query_->properties.insert_or_assign(std::move(key), std::move(value));
return *this;
}

ObjectQueryBuilder &ObjectQueryBuilder::with_property(std::string key, double value)
ObjectQueryBuilder &ObjectQueryBuilder::property(std::string key, double value)
{
query_->properties.insert_or_assign(std::move(key), std::move(value));
return *this;
}

ObjectQueryBuilder &ObjectQueryBuilder::with_property(std::string key, bool value)
ObjectQueryBuilder &ObjectQueryBuilder::property(std::string key, bool value)
{
query_->properties.insert_or_assign(std::move(key), std::move(value));
return *this;
}

ObjectQueryBuilder &ObjectQueryBuilder::with_property(std::string key, std::string value)
ObjectQueryBuilder &ObjectQueryBuilder::property(std::string key, std::string value)
{
query_->properties.insert_or_assign(std::move(key), std::move(value));
return *this;
}

ObjectQueryBuilder &ObjectQueryBuilder::with_parent(ObjectQueryBuilder parent)
ObjectQueryBuilder &ObjectQueryBuilder::parent(ObjectQueryBuilder parent)
{
query_->container = parent;
return *this;
}

ObjectQueryBuilder &ObjectQueryBuilder::with_type(std::string type_name)
ObjectQueryBuilder &ObjectQueryBuilder::type(std::string type_name)
{
query_->type_name = std::move(type_name);
return *this;
Expand All @@ -69,7 +68,7 @@ ObjectQueryBuilder::operator std::shared_ptr<ObjectQuery>() const
return query_;
}

ObjectQueryBuilder make_query()
ObjectQueryBuilder query()
{
return ObjectQueryBuilder{};
}
Expand Down
4 changes: 2 additions & 2 deletions libs/probeqt/tests/test_object_tracker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@ static suite<"qtprobe"> _ = [] { // NOLINT
tracker.add_object(&a2);
expect(loop.processEvents());

auto &&query = make_query().with_type("MyCustomClass");
auto found = tracker.find_object_by_query(query);
auto &&type_query = query().type("MyCustomClass");
auto found = tracker.find_object_by_query(type_query);
expect(found.has_value());
expect(found->object_id == to_object_id(&my_class));
};
Expand Down
22 changes: 11 additions & 11 deletions python/binding.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,28 +96,28 @@ PYBIND11_MODULE(_quite, m)
py::class_<quite::ObjectQuery>(m, "ObjectQuery").def(py::init<quite::ObjectQueryBuilder>());
py::class_<quite::ObjectQueryBuilder>(m, "ObjectQueryBuilder")
.def(py::init<>())
.def("with_property",
py::overload_cast<std::string, std::int64_t>(&quite::ObjectQueryBuilder::with_property),
.def("property",
py::overload_cast<std::string, std::int64_t>(&quite::ObjectQueryBuilder::property),
py::arg{"key"},
py::arg{"value"},
"Adds the property to the search requirements")
.def("with_property",
py::overload_cast<std::string, double>(&quite::ObjectQueryBuilder::with_property),
.def("property",
py::overload_cast<std::string, double>(&quite::ObjectQueryBuilder::property),
py::arg{"key"},
py::arg{"value"})
.def("with_property",
py::overload_cast<std::string, bool>(&quite::ObjectQueryBuilder::with_property),
.def("property",
py::overload_cast<std::string, bool>(&quite::ObjectQueryBuilder::property),
py::arg{"key"},
py::arg{"value"})
.def("with_property",
py::overload_cast<std::string, std::string>(&quite::ObjectQueryBuilder::with_property),
.def("property",
py::overload_cast<std::string, std::string>(&quite::ObjectQueryBuilder::property),
py::arg{"key"},
py::arg{"value"})
.def("with_parent", &quite::ObjectQueryBuilder::with_parent, py::arg("parent"))
.def("with_type", &quite::ObjectQueryBuilder::with_type, py::arg("type_name"));
.def("parent", &quite::ObjectQueryBuilder::parent, py::arg("parent"))
.def("type", &quite::ObjectQueryBuilder::type, py::arg("type_name"));
py::implicitly_convertible<quite::ObjectQueryBuilder, quite::ObjectQuery>();

m.def("make_query", &quite::make_query, "Create a new ObjectQuery");
m.def("query", &quite::query, "Create a new ObjectQuery");

m.def("expect", &expect, py::arg{"object"});
py_expect.def("screenshot", &IExpectBuilder::to_have_screenshot, py::arg{"name"});
Expand Down
4 changes: 2 additions & 2 deletions python/quite/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
__version__,
__version_git_ref__,
expect,
make_query,
query,
)

__all__ = [
Expand All @@ -35,5 +35,5 @@
"__version__",
"__version_git_ref__",
"expect",
"make_query",
"query",
]
4 changes: 2 additions & 2 deletions python/quite/__init__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ from ._quite import (
expect as expect,
)
from ._quite import (
make_query as make_query,
query as query,
)

__all__ = [
Expand All @@ -59,5 +59,5 @@ __all__ = [
"__version__",
"__version_git_ref__",
"expect",
"make_query",
"query",
]
62 changes: 30 additions & 32 deletions python/quite/_quite.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -76,77 +76,75 @@ class ObjectQueryBuilder:
def __init__(self) -> None:
"""__init__(self: quite._quite.ObjectQueryBuilder) -> None"""

def with_parent(self, parent: ObjectQuery) -> ObjectQueryBuilder:
"""with_parent(self: quite._quite.ObjectQueryBuilder, parent: quite._quite.ObjectQuery) -> quite._quite.ObjectQueryBuilder"""
def parent(self, parent: ObjectQueryBuilder) -> ObjectQueryBuilder:
"""parent(self: quite._quite.ObjectQueryBuilder, parent: quite._quite.ObjectQueryBuilder) -> quite._quite.ObjectQueryBuilder"""

@overload
def with_property(self, key: str, value: typing.SupportsInt) -> ObjectQueryBuilder:
"""with_property(*args, **kwargs)
def property(self, key: str, value: typing.SupportsInt) -> ObjectQueryBuilder:
"""property(*args, **kwargs)
Overloaded function.

1. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsInt) -> quite._quite.ObjectQueryBuilder
1. property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsInt) -> quite._quite.ObjectQueryBuilder

Adds the property to the search requirements

2. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsFloat) -> quite._quite.ObjectQueryBuilder
2. property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsFloat) -> quite._quite.ObjectQueryBuilder

3. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: bool) -> quite._quite.ObjectQueryBuilder
3. property(self: quite._quite.ObjectQueryBuilder, key: str, value: bool) -> quite._quite.ObjectQueryBuilder

4. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: str) -> quite._quite.ObjectQueryBuilder
4. property(self: quite._quite.ObjectQueryBuilder, key: str, value: str) -> quite._quite.ObjectQueryBuilder
"""

@overload
def with_property(
self, key: str, value: typing.SupportsFloat
) -> ObjectQueryBuilder:
"""with_property(*args, **kwargs)
def property(self, key: str, value: typing.SupportsFloat) -> ObjectQueryBuilder:
"""property(*args, **kwargs)
Overloaded function.

1. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsInt) -> quite._quite.ObjectQueryBuilder
1. property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsInt) -> quite._quite.ObjectQueryBuilder

Adds the property to the search requirements

2. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsFloat) -> quite._quite.ObjectQueryBuilder
2. property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsFloat) -> quite._quite.ObjectQueryBuilder

3. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: bool) -> quite._quite.ObjectQueryBuilder
3. property(self: quite._quite.ObjectQueryBuilder, key: str, value: bool) -> quite._quite.ObjectQueryBuilder

4. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: str) -> quite._quite.ObjectQueryBuilder
4. property(self: quite._quite.ObjectQueryBuilder, key: str, value: str) -> quite._quite.ObjectQueryBuilder
"""

@overload
def with_property(self, key: str, value: bool) -> ObjectQueryBuilder:
"""with_property(*args, **kwargs)
def property(self, key: str, value: bool) -> ObjectQueryBuilder:
"""property(*args, **kwargs)
Overloaded function.

1. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsInt) -> quite._quite.ObjectQueryBuilder
1. property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsInt) -> quite._quite.ObjectQueryBuilder

Adds the property to the search requirements

2. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsFloat) -> quite._quite.ObjectQueryBuilder
2. property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsFloat) -> quite._quite.ObjectQueryBuilder

3. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: bool) -> quite._quite.ObjectQueryBuilder
3. property(self: quite._quite.ObjectQueryBuilder, key: str, value: bool) -> quite._quite.ObjectQueryBuilder

4. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: str) -> quite._quite.ObjectQueryBuilder
4. property(self: quite._quite.ObjectQueryBuilder, key: str, value: str) -> quite._quite.ObjectQueryBuilder
"""

@overload
def with_property(self, key: str, value: str) -> ObjectQueryBuilder:
"""with_property(*args, **kwargs)
def property(self, key: str, value: str) -> ObjectQueryBuilder:
"""property(*args, **kwargs)
Overloaded function.

1. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsInt) -> quite._quite.ObjectQueryBuilder
1. property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsInt) -> quite._quite.ObjectQueryBuilder

Adds the property to the search requirements

2. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsFloat) -> quite._quite.ObjectQueryBuilder
2. property(self: quite._quite.ObjectQueryBuilder, key: str, value: typing.SupportsFloat) -> quite._quite.ObjectQueryBuilder

3. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: bool) -> quite._quite.ObjectQueryBuilder
3. property(self: quite._quite.ObjectQueryBuilder, key: str, value: bool) -> quite._quite.ObjectQueryBuilder

4. with_property(self: quite._quite.ObjectQueryBuilder, key: str, value: str) -> quite._quite.ObjectQueryBuilder
4. property(self: quite._quite.ObjectQueryBuilder, key: str, value: str) -> quite._quite.ObjectQueryBuilder
"""

def with_type(self, type_name: str) -> ObjectQueryBuilder:
"""with_type(self: quite._quite.ObjectQueryBuilder, type_name: str) -> quite._quite.ObjectQueryBuilder"""
def type(self, type_name: str) -> ObjectQueryBuilder:
"""type(self: quite._quite.ObjectQueryBuilder, type_name: str) -> quite._quite.ObjectQueryBuilder"""

class Probe:
def __init__(self, *args, **kwargs) -> None:
Expand Down Expand Up @@ -270,8 +268,8 @@ class RemoteObject:
def expect(object: RemoteObject) -> IExpectBuilder:
"""expect(object: quite._quite.RemoteObject) -> quite._quite.IExpectBuilder"""

def make_query() -> ObjectQueryBuilder:
"""make_query() -> quite._quite.ObjectQueryBuilder
def query() -> ObjectQueryBuilder:
"""query() -> quite._quite.ObjectQueryBuilder

Create a new ObjectQuery
"""
Loading
Loading