From bf0a66b54f8e00eaae8bc2f77b6211c5aa131782 Mon Sep 17 00:00:00 2001 From: Mykola Mokhnach Date: Fri, 12 Jul 2024 22:15:34 +0200 Subject: [PATCH] chore: Deprecate obsolete TouchAction helpers --- .../AndroidAbilityToUseSupplierTest.java | 71 ------- .../java_client/android/AndroidTouchTest.java | 193 ------------------ .../java/io/appium/java_client/AppiumBy.java | 26 +-- .../pagefactory/bys/ContentMappedBy.java | 23 +-- .../java_client/touch/ActionOptions.java | 1 + .../java_client/touch/LongPressOptions.java | 1 + .../appium/java_client/touch/TapOptions.java | 1 + .../appium/java_client/touch/WaitOptions.java | 1 + .../AbstractOptionCombinedWithPosition.java | 1 + .../touch/offset/ElementOption.java | 1 + .../java_client/touch/offset/PointOption.java | 1 + .../java_client/touch/DummyElement.java | 103 ---------- .../java_client/touch/FailsWithMatcher.java | 43 ---- .../java_client/touch/TouchOptionsTests.java | 96 --------- 14 files changed, 11 insertions(+), 551 deletions(-) delete mode 100644 src/e2eAndroidTest/java/io/appium/java_client/android/AndroidAbilityToUseSupplierTest.java delete mode 100644 src/e2eAndroidTest/java/io/appium/java_client/android/AndroidTouchTest.java delete mode 100644 src/test/java/io/appium/java_client/touch/DummyElement.java delete mode 100644 src/test/java/io/appium/java_client/touch/FailsWithMatcher.java delete mode 100644 src/test/java/io/appium/java_client/touch/TouchOptionsTests.java diff --git a/src/e2eAndroidTest/java/io/appium/java_client/android/AndroidAbilityToUseSupplierTest.java b/src/e2eAndroidTest/java/io/appium/java_client/android/AndroidAbilityToUseSupplierTest.java deleted file mode 100644 index 5db7921a7..000000000 --- a/src/e2eAndroidTest/java/io/appium/java_client/android/AndroidAbilityToUseSupplierTest.java +++ /dev/null @@ -1,71 +0,0 @@ -package io.appium.java_client.android; - -import io.appium.java_client.AppiumBy; -import io.appium.java_client.functions.ActionSupplier; -import io.appium.java_client.touch.offset.ElementOption; -import org.junit.jupiter.api.Test; -import org.openqa.selenium.By; -import org.openqa.selenium.Point; -import org.openqa.selenium.WebElement; - -import java.util.List; -import java.util.Map; - -import static io.appium.java_client.TestUtils.getCenter; -import static io.appium.java_client.touch.WaitOptions.waitOptions; -import static io.appium.java_client.touch.offset.ElementOption.element; -import static java.time.Duration.ofSeconds; -import static org.junit.jupiter.api.Assertions.assertNotEquals; - -public class AndroidAbilityToUseSupplierTest extends BaseAndroidTest { - - private final ActionSupplier horizontalSwipe = () -> { - driver.findElement(By.id("io.appium.android.apis:id/gallery")); - - WebElement gallery = driver.findElement(By.id("io.appium.android.apis:id/gallery")); - List images = gallery.findElements(AppiumBy.className("android.widget.ImageView")); - Point location = gallery.getLocation(); - Point center = getCenter(gallery, location); - - ElementOption pressOption = element(images.get(2),-10,center.y - location.y); - ElementOption moveOption = element(gallery, 10,center.y - location.y); - - return new AndroidTouchAction(driver) - .press(pressOption) - .waitAction(waitOptions(ofSeconds(2))) - .moveTo(moveOption) - .release(); - }; - - private final ActionSupplier verticalSwiping = () -> - new AndroidTouchAction(driver) - .press(element(driver.findElement(AppiumBy.accessibilityId("Gallery")))) - - .waitAction(waitOptions(ofSeconds(2))) - - .moveTo(element(driver.findElement(AppiumBy.accessibilityId("Auto Complete")))) - .release(); - - @Test public void horizontalSwipingWithSupplier() { - startActivity(".view.Gallery1"); - WebElement gallery = driver.findElement(By.id("io.appium.android.apis:id/gallery")); - List images = gallery.findElements(AppiumBy.className("android.widget.ImageView")); - int originalImageCount = images.size(); - - horizontalSwipe.get().perform(); - - assertNotEquals(originalImageCount, - gallery.findElements(AppiumBy.className("android.widget.ImageView")).size()); - } - - @Test public void verticalSwipingWithSupplier() throws Exception { - driver.executeScript("mobile: terminateApp", Map.of("appId", APP_ID)); - driver.executeScript("mobile: activateApp", Map.of("appId", APP_ID)); - driver.findElement(AppiumBy.accessibilityId("Views")).click(); - - Point originalLocation = driver.findElement(AppiumBy.accessibilityId("Gallery")).getLocation(); - verticalSwiping.get().perform(); - Thread.sleep(5000); - assertNotEquals(originalLocation, driver.findElement(AppiumBy.accessibilityId("Gallery")).getLocation()); - } -} diff --git a/src/e2eAndroidTest/java/io/appium/java_client/android/AndroidTouchTest.java b/src/e2eAndroidTest/java/io/appium/java_client/android/AndroidTouchTest.java deleted file mode 100644 index c24ed20fa..000000000 --- a/src/e2eAndroidTest/java/io/appium/java_client/android/AndroidTouchTest.java +++ /dev/null @@ -1,193 +0,0 @@ -package io.appium.java_client.android; - -import io.appium.java_client.AppiumBy; -import io.appium.java_client.MultiTouchAction; -import io.appium.java_client.TouchAction; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.openqa.selenium.By; -import org.openqa.selenium.Point; -import org.openqa.selenium.WebElement; - -import java.util.List; -import java.util.Map; - -import static io.appium.java_client.TestUtils.getCenter; -import static io.appium.java_client.touch.LongPressOptions.longPressOptions; -import static io.appium.java_client.touch.TapOptions.tapOptions; -import static io.appium.java_client.touch.WaitOptions.waitOptions; -import static io.appium.java_client.touch.offset.ElementOption.element; -import static io.appium.java_client.touch.offset.PointOption.point; -import static java.time.Duration.ofSeconds; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotEquals; - -public class AndroidTouchTest extends BaseAndroidTest { - - @BeforeEach - public void setUp() { - driver.executeScript("mobile: terminateApp", Map.of("appId", APP_ID)); - driver.executeScript("mobile: activateApp", Map.of("appId", APP_ID)); - } - - @Test public void dragNDropByElementTest() { - startActivity(".view.DragAndDropDemo"); - WebElement dragDot1 = driver.findElement(By.id("io.appium.android.apis:id/drag_dot_1")); - WebElement dragDot3 = driver.findElement(By.id("io.appium.android.apis:id/drag_dot_3")); - - WebElement dragText = driver.findElement(By.id("io.appium.android.apis:id/drag_text")); - assertEquals("Drag text not empty", "", dragText.getText()); - - TouchAction dragNDrop = new TouchAction(driver) - .longPress(element(dragDot1)) - .moveTo(element(dragDot3)) - .release(); - dragNDrop.perform(); - assertNotEquals("Drag text empty", "", dragText.getText()); - } - - @Test public void dragNDropByElementAndDurationTest() { - startActivity(".view.DragAndDropDemo"); - WebElement dragDot1 = driver.findElement(By.id("io.appium.android.apis:id/drag_dot_1")); - WebElement dragDot3 = driver.findElement(By.id("io.appium.android.apis:id/drag_dot_3")); - - WebElement dragText = driver.findElement(By.id("io.appium.android.apis:id/drag_text")); - assertEquals("Drag text not empty", "", dragText.getText()); - - TouchAction dragNDrop = new TouchAction(driver) - .longPress(longPressOptions() - .withElement(element(dragDot1)) - .withDuration(ofSeconds(2))) - .moveTo(element(dragDot3)) - .release(); - dragNDrop.perform(); - assertNotEquals("Drag text empty", "", dragText.getText()); - } - - @Test public void dragNDropByCoordinatesTest() { - startActivity(".view.DragAndDropDemo"); - WebElement dragDot1 = driver.findElement(By.id("io.appium.android.apis:id/drag_dot_1")); - WebElement dragDot3 = driver.findElement(By.id("io.appium.android.apis:id/drag_dot_3")); - - WebElement dragText = driver.findElement(By.id("io.appium.android.apis:id/drag_text")); - assertEquals("Drag text not empty", "", dragText.getText()); - - Point center1 = getCenter(dragDot1); - Point center2 = getCenter(dragDot3); - - TouchAction dragNDrop = new TouchAction(driver) - .longPress(point(center1.x, center1.y)) - .moveTo(point(center2.x, center2.y)) - .release(); - dragNDrop.perform(); - assertNotEquals("Drag text empty", "", dragText.getText()); - } - - @Test public void dragNDropByCoordinatesAndDurationTest() { - startActivity(".view.DragAndDropDemo"); - WebElement dragDot1 = driver.findElement(By.id("io.appium.android.apis:id/drag_dot_1")); - WebElement dragDot3 = driver.findElement(By.id("io.appium.android.apis:id/drag_dot_3")); - - WebElement dragText = driver.findElement(By.id("io.appium.android.apis:id/drag_text")); - assertEquals("Drag text not empty", "", dragText.getText()); - - Point center1 = getCenter(dragDot1); - Point center2 = getCenter(dragDot3); - - TouchAction dragNDrop = new TouchAction(driver) - .longPress(longPressOptions() - .withPosition(point(center1.x, center1.y)) - .withDuration(ofSeconds(2))) - .moveTo(point(center2.x, center2.y)) - .release(); - dragNDrop.perform(); - assertNotEquals("Drag text empty", "", dragText.getText()); - } - - @Test public void pressByCoordinatesTest() { - startActivity(".view.Buttons1"); - Point point = driver.findElement(By.id("io.appium.android.apis:id/button_toggle")).getLocation(); - new TouchAction(driver) - .press(point(point.x + 20, point.y + 30)) - .waitAction(waitOptions(ofSeconds(1))) - .release() - .perform(); - assertEquals("ON", driver.findElement(By.id("io.appium.android.apis:id/button_toggle")).getText()); - } - - @Test public void pressByElementTest() { - startActivity(".view.Buttons1"); - new TouchAction(driver) - .press(element(driver.findElement(By.id("io.appium.android.apis:id/button_toggle")))) - .waitAction(waitOptions(ofSeconds(1))) - .release() - .perform(); - assertEquals("ON", driver.findElement(By.id("io.appium.android.apis:id/button_toggle")).getText()); - } - - @Test public void tapActionTestByElement() throws Exception { - startActivity(".view.ChronometerDemo"); - WebElement chronometer = driver.findElement(By.id("io.appium.android.apis:id/chronometer")); - - TouchAction startStop = new TouchAction(driver) - .tap(tapOptions().withElement(element(driver.findElement(By.id("io.appium.android.apis:id/start"))))) - .waitAction(waitOptions(ofSeconds(2))) - .tap(tapOptions().withElement(element(driver.findElement(By.id("io.appium.android.apis:id/stop"))))); - - startStop.perform(); - - String time = chronometer.getText(); - assertNotEquals(time, "Initial format: 00:00"); - Thread.sleep(2500); - assertEquals(time, chronometer.getText()); - } - - @Test public void tapActionTestByCoordinates() throws Exception { - startActivity(".view.ChronometerDemo"); - WebElement chronometer = driver.findElement(By.id("io.appium.android.apis:id/chronometer")); - - Point center1 = getCenter(driver.findElement(By.id("io.appium.android.apis:id/start"))); - - TouchAction startStop = new TouchAction(driver) - .tap(point(center1.x, center1.y)) - .tap(element(driver.findElement(By.id("io.appium.android.apis:id/stop")), 5, 5)); - startStop.perform(); - - String time = chronometer.getText(); - assertNotEquals(time, "Initial format: 00:00"); - Thread.sleep(2500); - assertEquals(time, chronometer.getText()); - } - - @Test public void horizontalSwipingTest() { - startActivity(".view.Gallery1"); - - WebElement gallery = driver.findElement(By.id("io.appium.android.apis:id/gallery")); - List images = gallery.findElements(AppiumBy.className("android.widget.ImageView")); - int originalImageCount = images.size(); - Point location = gallery.getLocation(); - Point center = getCenter(gallery); - - TouchAction swipe = new TouchAction(driver) - .press(element(images.get(2),-10, center.y - location.y)) - .waitAction(waitOptions(ofSeconds(2))) - .moveTo(element(gallery,10,center.y - location.y)) - .release(); - swipe.perform(); - assertNotEquals(originalImageCount, - gallery.findElements(AppiumBy.className("android.widget.ImageView")).size()); - } - - @Test public void multiTouchTest() { - startActivity(".view.Buttons1"); - TouchAction press = new TouchAction(driver) - .press(element(driver.findElement(By.id("io.appium.android.apis:id/button_toggle")))) - .waitAction(waitOptions(ofSeconds(1))) - .release(); - new MultiTouchAction(driver) - .add(press) - .perform(); - assertEquals("ON", driver.findElement(By.id("io.appium.android.apis:id/button_toggle")).getText()); - } - -} diff --git a/src/main/java/io/appium/java_client/AppiumBy.java b/src/main/java/io/appium/java_client/AppiumBy.java index 21e11d08e..cb374831e 100644 --- a/src/main/java/io/appium/java_client/AppiumBy.java +++ b/src/main/java/io/appium/java_client/AppiumBy.java @@ -17,6 +17,7 @@ package io.appium.java_client; import com.google.common.base.Preconditions; +import lombok.EqualsAndHashCode; import lombok.Getter; import org.openqa.selenium.By; import org.openqa.selenium.By.Remotable; @@ -25,10 +26,10 @@ import java.io.Serializable; import java.util.List; -import java.util.Objects; import static com.google.common.base.Strings.isNullOrEmpty; +@EqualsAndHashCode(callSuper = true) public abstract class AppiumBy extends By implements Remotable { @Getter private final Parameters remoteParameters; @@ -256,27 +257,4 @@ protected ByIosNsPredicate(String locatorString) { super("-ios predicate string", locatorString, "iOSNsPredicate"); } } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - if (!super.equals(o)) { - return false; - } - AppiumBy appiumBy = (AppiumBy) o; - return Objects.equals(remoteParameters, appiumBy.remoteParameters) - && Objects.equals(locatorName, appiumBy.locatorName); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), remoteParameters, locatorName); - } } - - diff --git a/src/main/java/io/appium/java_client/pagefactory/bys/ContentMappedBy.java b/src/main/java/io/appium/java_client/pagefactory/bys/ContentMappedBy.java index 4bb1b1f4d..6c0c0f99f 100644 --- a/src/main/java/io/appium/java_client/pagefactory/bys/ContentMappedBy.java +++ b/src/main/java/io/appium/java_client/pagefactory/bys/ContentMappedBy.java @@ -16,6 +16,7 @@ package io.appium.java_client.pagefactory.bys; +import lombok.EqualsAndHashCode; import org.openqa.selenium.By; import org.openqa.selenium.SearchContext; import org.openqa.selenium.WebElement; @@ -23,11 +24,11 @@ import javax.annotation.Nonnull; import java.util.List; import java.util.Map; -import java.util.Objects; import static io.appium.java_client.pagefactory.bys.ContentType.NATIVE_MOBILE_SPECIFIC; import static java.util.Objects.requireNonNull; +@EqualsAndHashCode(callSuper = true) public class ContentMappedBy extends By { private final Map map; private ContentType currentContent = NATIVE_MOBILE_SPECIFIC; @@ -62,24 +63,4 @@ public List findElements(SearchContext context) { public String toString() { return map.get(currentContent).toString(); } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - if (!super.equals(o)) { - return false; - } - ContentMappedBy that = (ContentMappedBy) o; - return Objects.equals(map, that.map) && currentContent == that.currentContent; - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), map, currentContent); - } } diff --git a/src/main/java/io/appium/java_client/touch/ActionOptions.java b/src/main/java/io/appium/java_client/touch/ActionOptions.java index 2673142e4..2514a92a5 100644 --- a/src/main/java/io/appium/java_client/touch/ActionOptions.java +++ b/src/main/java/io/appium/java_client/touch/ActionOptions.java @@ -19,6 +19,7 @@ import java.util.HashMap; import java.util.Map; +@Deprecated public abstract class ActionOptions> { /** * This method is automatically called before building diff --git a/src/main/java/io/appium/java_client/touch/LongPressOptions.java b/src/main/java/io/appium/java_client/touch/LongPressOptions.java index 9f9104b71..56d2334fb 100644 --- a/src/main/java/io/appium/java_client/touch/LongPressOptions.java +++ b/src/main/java/io/appium/java_client/touch/LongPressOptions.java @@ -25,6 +25,7 @@ import static java.util.Objects.requireNonNull; import static java.util.Optional.ofNullable; +@Deprecated public class LongPressOptions extends AbstractOptionCombinedWithPosition { protected Duration duration = null; diff --git a/src/main/java/io/appium/java_client/touch/TapOptions.java b/src/main/java/io/appium/java_client/touch/TapOptions.java index 620df8286..7dee99fae 100644 --- a/src/main/java/io/appium/java_client/touch/TapOptions.java +++ b/src/main/java/io/appium/java_client/touch/TapOptions.java @@ -23,6 +23,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static java.util.Optional.ofNullable; +@Deprecated public class TapOptions extends AbstractOptionCombinedWithPosition { private Integer tapsCount = null; diff --git a/src/main/java/io/appium/java_client/touch/WaitOptions.java b/src/main/java/io/appium/java_client/touch/WaitOptions.java index 29d869b07..11eb0ccdc 100644 --- a/src/main/java/io/appium/java_client/touch/WaitOptions.java +++ b/src/main/java/io/appium/java_client/touch/WaitOptions.java @@ -23,6 +23,7 @@ import static java.time.Duration.ofMillis; import static java.util.Objects.requireNonNull; +@Deprecated public class WaitOptions extends ActionOptions { protected Duration duration = ofMillis(0); diff --git a/src/main/java/io/appium/java_client/touch/offset/AbstractOptionCombinedWithPosition.java b/src/main/java/io/appium/java_client/touch/offset/AbstractOptionCombinedWithPosition.java index d10a05682..194228eea 100644 --- a/src/main/java/io/appium/java_client/touch/offset/AbstractOptionCombinedWithPosition.java +++ b/src/main/java/io/appium/java_client/touch/offset/AbstractOptionCombinedWithPosition.java @@ -6,6 +6,7 @@ import static java.util.Optional.ofNullable; +@Deprecated public abstract class AbstractOptionCombinedWithPosition> extends ActionOptions> { private ActionOptions positionOption; diff --git a/src/main/java/io/appium/java_client/touch/offset/ElementOption.java b/src/main/java/io/appium/java_client/touch/offset/ElementOption.java index 16cf65f70..ac5d577a7 100644 --- a/src/main/java/io/appium/java_client/touch/offset/ElementOption.java +++ b/src/main/java/io/appium/java_client/touch/offset/ElementOption.java @@ -11,6 +11,7 @@ import static java.util.Objects.requireNonNull; import static java.util.Optional.ofNullable; +@Deprecated public class ElementOption extends PointOption { private String elementId; diff --git a/src/main/java/io/appium/java_client/touch/offset/PointOption.java b/src/main/java/io/appium/java_client/touch/offset/PointOption.java index 9bad51609..a45d59f9c 100644 --- a/src/main/java/io/appium/java_client/touch/offset/PointOption.java +++ b/src/main/java/io/appium/java_client/touch/offset/PointOption.java @@ -7,6 +7,7 @@ import static java.util.Optional.ofNullable; +@Deprecated public class PointOption> extends ActionOptions { protected Point coordinates; diff --git a/src/test/java/io/appium/java_client/touch/DummyElement.java b/src/test/java/io/appium/java_client/touch/DummyElement.java deleted file mode 100644 index 62e1fbb12..000000000 --- a/src/test/java/io/appium/java_client/touch/DummyElement.java +++ /dev/null @@ -1,103 +0,0 @@ -package io.appium.java_client.touch; - -import org.openqa.selenium.By; -import org.openqa.selenium.Dimension; -import org.openqa.selenium.OutputType; -import org.openqa.selenium.Point; -import org.openqa.selenium.Rectangle; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.remote.RemoteWebElement; - -import java.util.List; - -public class DummyElement extends RemoteWebElement { - @Override - public void click() { - // dummy - } - - @Override - public void submit() { - // dummy - } - - @Override - public void sendKeys(CharSequence... charSequences) { - // dummy - } - - @Override - public void clear() { - // dummy - } - - @Override - public String getTagName() { - return ""; - } - - @Override - public String getAttribute(String s) { - return ""; - } - - @Override - public boolean isSelected() { - return false; - } - - @Override - public boolean isEnabled() { - return false; - } - - @Override - public String getText() { - return ""; - } - - @Override - public List findElements(By by) { - return null; - } - - @Override - public WebElement findElement(By by) { - return null; - } - - @Override - public boolean isDisplayed() { - return false; - } - - @Override - public Point getLocation() { - return null; - } - - @Override - public Dimension getSize() { - return null; - } - - @Override - public Rectangle getRect() { - return null; - } - - @Override - public String getCssValue(String s) { - return ""; - } - - @Override - public X getScreenshotAs(OutputType outputType) { - return null; - } - - @Override - public String getId() { - return "123"; - } -} diff --git a/src/test/java/io/appium/java_client/touch/FailsWithMatcher.java b/src/test/java/io/appium/java_client/touch/FailsWithMatcher.java deleted file mode 100644 index 2d79fcfec..000000000 --- a/src/test/java/io/appium/java_client/touch/FailsWithMatcher.java +++ /dev/null @@ -1,43 +0,0 @@ -package io.appium.java_client.touch; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.TypeSafeMatcher; - -import static org.hamcrest.core.AllOf.allOf; -import static org.hamcrest.core.IsInstanceOf.instanceOf; - -public final class FailsWithMatcher extends TypeSafeMatcher { - - private final Matcher matcher; - - private FailsWithMatcher(final Matcher matcher) { - this.matcher = matcher; - } - - public static Matcher failsWith( - final Class throwableType) { - return new FailsWithMatcher<>(instanceOf(throwableType)); - } - - public static Matcher failsWith( - final Class throwableType, final Matcher throwableMatcher) { - return new FailsWithMatcher(allOf(instanceOf(throwableType), throwableMatcher)); - } - - @Override - protected boolean matchesSafely(final Runnable runnable) { - try { - runnable.run(); - return false; - } catch (final Throwable ex) { - return matcher.matches(ex); - } - } - - @Override - public void describeTo(final Description description) { - description.appendText("fails with ").appendDescriptionOf(matcher); - } - -} diff --git a/src/test/java/io/appium/java_client/touch/TouchOptionsTests.java b/src/test/java/io/appium/java_client/touch/TouchOptionsTests.java deleted file mode 100644 index a68bc3fa6..000000000 --- a/src/test/java/io/appium/java_client/touch/TouchOptionsTests.java +++ /dev/null @@ -1,96 +0,0 @@ -package io.appium.java_client.touch; - -import io.appium.java_client.touch.offset.ElementOption; -import io.appium.java_client.touch.offset.PointOption; -import org.junit.jupiter.api.Test; -import org.openqa.selenium.Point; -import org.openqa.selenium.remote.RemoteWebElement; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static io.appium.java_client.touch.FailsWithMatcher.failsWith; -import static io.appium.java_client.touch.LongPressOptions.longPressOptions; -import static io.appium.java_client.touch.TapOptions.tapOptions; -import static io.appium.java_client.touch.WaitOptions.waitOptions; -import static io.appium.java_client.touch.offset.ElementOption.element; -import static io.appium.java_client.touch.offset.PointOption.point; -import static java.time.Duration.ofMillis; -import static java.time.Duration.ofSeconds; -import static org.hamcrest.CoreMatchers.everyItem; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.in; -import static org.hamcrest.Matchers.is; -import static org.junit.jupiter.api.Assertions.assertThrows; - -public class TouchOptionsTests { - private static final RemoteWebElement DUMMY_ELEMENT = new DummyElement(); - - @Test - public void invalidEmptyPointOptionsShouldFailOnBuild() { - assertThrows(IllegalArgumentException.class, - () -> new PointOption<>().build()); - } - - @Test - public void invalidEmptyElementOptionsShouldFailOnBuild() { - assertThrows(IllegalArgumentException.class, - () -> new ElementOption().build()); - } - - @Test - public void invalidOptionsArgumentsShouldFailOnAltering() { - final List invalidOptions = new ArrayList<>(); - invalidOptions.add(() -> waitOptions(ofMillis(-1))); - invalidOptions.add(() -> new ElementOption().withCoordinates(new Point(0, 0)).withElement(null)); - invalidOptions.add(() -> new WaitOptions().withDuration(null)); - invalidOptions.add(() -> tapOptions().withTapsCount(-1)); - invalidOptions.add(() -> longPressOptions().withDuration(null)); - invalidOptions.add(() -> longPressOptions().withDuration(ofMillis(-1))); - for (Runnable item : invalidOptions) { - assertThat(item, failsWith(RuntimeException.class)); - } - } - - @Test - public void longPressOptionsShouldBuildProperly() { - final Map actualOpts = longPressOptions() - .withElement(element(DUMMY_ELEMENT).withCoordinates(0, 0)) - .withDuration(ofMillis(1)) - .build(); - final Map expectedOpts = new HashMap<>(); - expectedOpts.put("element", DUMMY_ELEMENT.getId()); - expectedOpts.put("x", 0); - expectedOpts.put("y", 0); - expectedOpts.put("duration", 1L); - assertThat(actualOpts.entrySet(), everyItem(is(in(expectedOpts.entrySet())))); - assertThat(expectedOpts.entrySet(), everyItem(is(in(actualOpts.entrySet())))); - } - - @Test - public void tapOptionsShouldBuildProperly() { - final Map actualOpts = tapOptions() - .withPosition(point(new Point(0, 0))) - .withTapsCount(2) - .build(); - final Map expectedOpts = new HashMap<>(); - expectedOpts.put("x", 0); - expectedOpts.put("y", 0); - expectedOpts.put("count", 2); - assertThat(actualOpts.entrySet(), everyItem(is(in(expectedOpts.entrySet())))); - assertThat(expectedOpts.entrySet(), everyItem(is(in(actualOpts.entrySet())))); - } - - @Test - public void waitOptionsShouldBuildProperly() { - final Map actualOpts = new WaitOptions() - .withDuration(ofSeconds(1)) - .build(); - final Map expectedOpts = new HashMap<>(); - expectedOpts.put("ms", 1000L); - assertThat(actualOpts.entrySet(), everyItem(is(in(expectedOpts.entrySet())))); - assertThat(expectedOpts.entrySet(), everyItem(is(in(actualOpts.entrySet())))); - } -}