1 // Copyright 2015-present 650 Industries. All rights reserved. 2 package host.exp.exponent.utils 3 4 import android.view.View 5 import androidx.test.espresso.matcher.BoundedMatcher 6 import org.hamcrest.Description 7 import org.hamcrest.Matcher 8 import org.hamcrest.Matchers 9 10 object ExponentMatchers { 11 fun getTestId(view: View): String? { 12 return if (view.tag is String) view.tag as String else null 13 } 14 15 fun withTestId(text: String): Matcher<View> { 16 return withTestId(Matchers.`is`(text)) 17 } 18 19 private fun withTestId(stringMatcher: Matcher<String>): Matcher<View> { 20 return object : BoundedMatcher<View, View>(View::class.java) { 21 override fun describeTo(description: Description) { 22 description.appendText("with test id: ") 23 stringMatcher.describeTo(description) 24 } 25 26 public override fun matchesSafely(view: View): Boolean { 27 val testId = getTestId(view) 28 return if (testId == null) { 29 false 30 } else { 31 stringMatcher.matches(testId) 32 } 33 } 34 } 35 } 36 } 37