diff options
author | Yorke Lee <yorkelee@google.com> | 2015-10-26 21:28:08 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-10-26 21:28:08 +0000 |
commit | c58c53f9bf497f891e857da4b55a02b594082da6 (patch) | |
tree | 342d009971065eeb707978e40fa53e7b18b2885c /tests | |
parent | 8aa0a941f872b491e19a7afec43141973019d455 (diff) | |
parent | 135e465360dc36f1b9602660e290825d1e1fd00e (diff) |
Merge "Fix issue with entering '+' with switch access" into ub-contactsdialer-a-dev
Diffstat (limited to 'tests')
-rw-r--r-- | tests/src/com/android/dialer/dialpad/DialpadFragmentInstrumentationTest.java | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/tests/src/com/android/dialer/dialpad/DialpadFragmentInstrumentationTest.java b/tests/src/com/android/dialer/dialpad/DialpadFragmentInstrumentationTest.java new file mode 100644 index 000000000..876c13ba1 --- /dev/null +++ b/tests/src/com/android/dialer/dialpad/DialpadFragmentInstrumentationTest.java @@ -0,0 +1,121 @@ +package com.android.dialer.dialpad; + +import android.test.ActivityInstrumentationTestCase2; +import android.view.View; + +import com.android.dialer.DialtactsActivity; +import com.android.dialer.R; + +/** + * Tests that rely on instrumenting an actual instance of a {@link DialpadFragment}. + */ +public class DialpadFragmentInstrumentationTest extends + ActivityInstrumentationTestCase2<DialtactsActivity> { + private DialtactsActivity mActivity; + + public DialpadFragmentInstrumentationTest() { + super(DialtactsActivity.class); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + mActivity = getActivity(); + } + + /** + * Simulates a long click event on the zero key with a prior onPressed callback. + * + */ + public void testManualLongClickZero_DeletesPreviousCharacter() { + final DialpadFragment fragment = showDialpad(); + pressAndReleaseKey(9, fragment); + + getInstrumentation().runOnMainSync(new Runnable() { + @Override + public void run() { + final View zeroKey = findViewByDigit(0, fragment); + fragment.onPressed(zeroKey, true); + fragment.onLongClick(zeroKey); + } + }); + + assertEquals("9+", fragment.getDigitsWidget().getText().toString()); + } + + /** + * Simulates a long click event on the zero key without a prior onPressed + * callback. + */ + public void testSystemLongClickZero_PreservesPreviousCharacter() { + final DialpadFragment fragment = showDialpad(); + pressAndReleaseKey(9, fragment); + + getInstrumentation().runOnMainSync(new Runnable() { + @Override + public void run() { + final View zeroKey = findViewByDigit(0, fragment); + fragment.onLongClick(zeroKey); + } + }); + + assertEquals("9+", fragment.getDigitsWidget().getText().toString()); + } + + private DialpadFragment showDialpad() { + getInstrumentation().runOnMainSync(new Runnable() { + @Override + public void run() { + mActivity.showDialpad(); + } + }); + getInstrumentation().waitForIdleSync(); + return (DialpadFragment) mActivity.getFragmentManager().findFragmentByTag( + DialtactsActivity.TAG_DIALPAD_FRAGMENT); + } + + private void pressAndReleaseKey(int digit, final DialpadFragment fragment) { + final View dialpadKey = findViewByDigit(digit, fragment); + final String digitsBefore = fragment.getDigitsWidget().getText().toString(); + getInstrumentation().runOnMainSync(new Runnable() { + @Override + public void run() { + fragment.onPressed(dialpadKey, true); + fragment.onPressed(dialpadKey, false); + } + }); + assertEquals(digitsBefore + String.valueOf(digit), + fragment.getDigitsWidget().getText().toString()); + } + + private View findViewByDigit(int digit, DialpadFragment fragment) { + return fragment.getView().findViewById(getViewIdByDigit(digit)); + } + + private int getViewIdByDigit(int digit) { + switch (digit) { + case 0: + return R.id.zero; + case 1: + return R.id.one; + case 2: + return R.id.two; + case 3: + return R.id.three; + case 4: + return R.id.four; + case 5: + return R.id.five; + case 6: + return R.id.six; + case 7: + return R.id.seven; + case 8: + return R.id.eight; + case 9: + return R.id.nine; + default: + return 0; + } + } +} |