libaurum: Add Mock and unit tests for getMatches* interfaces 89/304689/1
authorWoochan Lee <wc0917.lee@samsung.com>
Tue, 23 Jan 2024 07:21:12 +0000 (16:21 +0900)
committerWoochan Lee <wc0917.lee@samsung.com>
Tue, 23 Jan 2024 07:21:12 +0000 (16:21 +0900)
Added a mock and tests for and interfaces that operates using UIFW atspi bridge.

Change-Id: I146402e07d43319f6392ec467a720b6c3289efe3

libaurum/src/Impl/Accessibility/MockAccessibleNode.cc
libaurum/src/Impl/MockDeviceImpl.cc
tests/Test_UiObject.cc

index ca6fc10..8811042 100644 (file)
@@ -27,7 +27,6 @@ using namespace AurumInternal::Mock;
 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);
@@ -37,7 +36,6 @@ MockAccessibleNode::MockAccessibleNode(std::shared_ptr<AccessibleNode> parent, s
 
 MockAccessibleNode::~MockAccessibleNode()
 {
-    printf("%s:%d / %s\n",__FILE__, __LINE__, __PRETTY_FUNCTION__);
     auto watcher = AccessibleWatcher::getInstance();
     watcher->detach(shared_from_this());
 }
@@ -65,20 +63,75 @@ std::vector<std::shared_ptr<AccessibleNode>> MockAccessibleNode::getMatches(cons
 {
     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;
 }
 
index db933f4..2005dee 100644 (file)
@@ -150,14 +150,12 @@ bool MockDeviceImpl::pressBack(KeyRequestType type)
 {
     mKeyDevice.push_back(std::tuple<MockKeyType, KeyRequestType, std::string>(MockKeyType::BACK, type, ""));
     return true;
-
 }
 
 bool MockDeviceImpl::pressHome(KeyRequestType type)
 {
     mKeyDevice.push_back(std::tuple<MockKeyType, KeyRequestType, std::string>(MockKeyType::HOME, type, ""));
     return true;
-
 }
 
 bool MockDeviceImpl::pressMenu(KeyRequestType type)
index 7b8cb40..91a2e11 100644 (file)
@@ -516,3 +516,87 @@ TEST_F(AurumTestUiObject, getScreenBoundingBox_N1)
     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);
+}