MockAccessibleNode::MockAccessibleNode(std::shared_ptr<AccessibleNode> parent, std::string text, std::string pkg, std::string role, std::string res, std::string type, std::string style,std::string automationId, Rect<int> screenBoundingBox, int supportingIfaces,int featureProperty)
: mParentNode(parent), mChildrenList{}, mActionSet{}
{
- printf("%s:%d / %s\n",__FILE__, __LINE__, __PRETTY_FUNCTION__);
const auto trickDontRemove = std::shared_ptr<MockAccessibleNode>( this, [](MockAccessibleNode *){} );
setProperties(text,pkg,role,res,type,style,automationId, screenBoundingBox, supportingIfaces, featureProperty);
MockAccessibleNode::~MockAccessibleNode()
{
- printf("%s:%d / %s\n",__FILE__, __LINE__, __PRETTY_FUNCTION__);
auto watcher = AccessibleWatcher::getInstance();
watcher->detach(shared_from_this());
}
{
std::vector<std::shared_ptr<AccessibleNode>> ret{};
+ if (selector->mMatchText) {
+ for (auto &child : mChildrenList) {
+ if (selector->mText == child->getText()) {
+ ret.push_back(child);
+ if (ealryReturn) break;
+ }
+ }
+ }
+
+ if (selector->mMatchType) {
+ for (auto &child : mChildrenList) {
+ if (selector->mType == child->getType()) {
+ ret.push_back(child);
+ if (ealryReturn) break;
+ }
+ }
+ }
+
+ if (selector->mMatchStyle) {
+ for (auto &child : mChildrenList) {
+ if (selector->mStyle == child->getStyle()) {
+ ret.push_back(child);
+ if (ealryReturn) break;
+ }
+ }
+ }
return ret;
}
std::vector<std::shared_ptr<AccessibleNode>> MockAccessibleNode::getMatchesInMatches(const std::shared_ptr<UiSelector> firstSelector, const std::shared_ptr<UiSelector> secondSelector, const bool ealryReturn) const
{
+ std::vector<std::shared_ptr<AccessibleNode>> tempRet{};
std::vector<std::shared_ptr<AccessibleNode>> ret{};
+ tempRet = getMatches(firstSelector, ealryReturn);
+
+ if (secondSelector->mMatchText) {
+ for (auto &child : tempRet) {
+ if (secondSelector->mText == child->getText()) {
+ ret.push_back(child);
+ if (ealryReturn) break;
+ }
+ }
+ }
+
+ if (secondSelector->mMatchType) {
+ for (auto &child : tempRet) {
+ if (secondSelector->mType == child->getType()) {
+ ret.push_back(child);
+ if (ealryReturn) break;
+ }
+ }
+ }
+
+ if (secondSelector->mMatchStyle) {
+ for (auto &child : tempRet) {
+ if (secondSelector->mStyle == child->getStyle()) {
+ ret.push_back(child);
+ if (ealryReturn) break;
+ }
+ }
+ }
+
return ret;
}
void* MockAccessibleNode::getRawHandler(void) const
{
- printf("%s:%d / %s\n",__FILE__, __LINE__, __PRETTY_FUNCTION__);
return (void*)1;
}
ASSERT_NE(box.mTopLeft.x, 0 );
ASSERT_NE(box.mTopLeft.y, 0 );
}
+
+TEST_F(AurumTestUiObject, getMatches_P1)
+{
+ auto obj = UiDevice::getInstance();
+ auto parent = obj->findObject(Sel::text("test2"));
+
+ auto matchedNodes = obj->getMatches(Sel::text("ACTIVE"), 0);
+ ASSERT_EQ(matchedNodes.size(), 1);
+
+ matchedNodes = obj->getMatches(Sel::type("type"), 0);
+ ASSERT_EQ(matchedNodes.size(), 16);
+
+ matchedNodes = obj->getMatches(Sel::style("style"), 0);
+ ASSERT_EQ(matchedNodes.size(), 16);
+}
+
+TEST_F(AurumTestUiObject, getMatches_P2)
+{
+ auto obj = UiDevice::getInstance();
+ auto parent = obj->findObject(Sel::text("test2"));
+
+ auto matchedNodes = obj->getMatches(Sel::text("ACTIVE"), 1);
+ ASSERT_EQ(matchedNodes.size(), 1);
+ ASSERT_EQ(matchedNodes[0]->getText(), "ACTIVE");
+
+ matchedNodes = obj->getMatches(Sel::type("type"), 1);
+ ASSERT_EQ(matchedNodes.size(), 1);
+ ASSERT_EQ(matchedNodes[0]->getType(), "type");
+
+ matchedNodes = obj->getMatches(Sel::style("style"), 1);
+ ASSERT_EQ(matchedNodes.size(), 1);
+}
+
+TEST_F(AurumTestUiObject, getMatches_N1)
+{
+ auto obj = UiDevice::getInstance();
+ auto parent = obj->findObject(Sel::text("test2"));
+
+ auto matchedNodes = obj->getMatches(Sel::text("testText"), 1);
+ ASSERT_NE(matchedNodes.size(), 1);
+
+ matchedNodes = obj->getMatches(Sel::type("testType"), 1);
+ ASSERT_NE(matchedNodes.size(), 1);
+
+ matchedNodes = obj->getMatches(Sel::style("testStyle"), 1);
+ ASSERT_NE(matchedNodes.size(), 1);
+}
+
+TEST_F(AurumTestUiObject, getMatchesInMatches_P1)
+{
+ auto obj = UiDevice::getInstance();
+ auto parent = obj->findObject(Sel::text("test2"));
+
+ auto matchedNodes = obj->getMatchesInMatches(Sel::type("type"), Sel::text("ACTIVE"), 0);
+ ASSERT_EQ(matchedNodes.size(), 1);
+ ASSERT_EQ(matchedNodes[0]->getText(), "ACTIVE");
+
+ matchedNodes = obj->getMatchesInMatches(Sel::type("type"), Sel::style("style"), 0);
+ ASSERT_EQ(matchedNodes.size(), 16);
+}
+
+TEST_F(AurumTestUiObject, getMatchesInMatches_P2)
+{
+ auto obj = UiDevice::getInstance();
+ auto parent = obj->findObject(Sel::text("test2"));
+
+ auto matchedNodes = obj->getMatchesInMatches(Sel::type("type"), Sel::text("ACTIVE"), 1);
+ ASSERT_EQ(matchedNodes.size(), 0);
+
+ matchedNodes = obj->getMatchesInMatches(Sel::type("type"), Sel::style("style"), 1);
+ ASSERT_EQ(matchedNodes.size(), 1);
+}
+
+TEST_F(AurumTestUiObject, getMatchesInMatches_N1)
+{
+ auto obj = UiDevice::getInstance();
+ auto parent = obj->findObject(Sel::text("test2"));
+
+ auto matchedNodes = obj->getMatchesInMatches(Sel::type("testType"), Sel::text("testText"), 1);
+ ASSERT_NE(matchedNodes.size(), 1);
+
+ matchedNodes = obj->getMatchesInMatches(Sel::type("testType"), Sel::style("testStyle"), 1);
+ ASSERT_NE(matchedNodes.size(), 1);
+}