blob: 31704825a1704d146ea177c37932cdbc8f2b3ab0 [file] [log] [blame]
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.text.method.cts;
import android.cts.util.KeyEventUtil;
import android.text.InputType;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.DigitsKeyListener;
import android.view.KeyEvent;
/**
* Test {@link DigitsKeyListener}.
*/
public class DigitsKeyListenerTest extends KeyListenerTestCase {
private KeyEventUtil mKeyEventUtil;
@Override
protected void setUp() throws Exception {
super.setUp();
mKeyEventUtil = new KeyEventUtil(getInstrumentation());
}
public void testConstructor() {
new DigitsKeyListener();
new DigitsKeyListener(true, true);
}
/*
* Check point:
* Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'.
* 1. filter "123456", return null.
* 2. filter "a1b2c3d", return "123"
* 3. filter "-a1.b2c3d", return "123"
* 4. filter "+a1.b2c3d", return "123"
* 5. filter Spanned("-a1.b2c3d"), return Spanned("123") and copy spans.
* 6. filter "", return null
*/
public void testFilter1() {
String source = "123456";
String destString = "dest string";
DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance();
SpannableString dest = new SpannableString(destString);
assertNull(digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length()));
assertEquals(destString, dest.toString());
source = "a1b2c3d";
assertEquals("123", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "-a1.b2c3d";
assertEquals("123", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "+a1.b2c3d";
assertEquals("123", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
Object what = new Object();
Spannable spannableSource = new SpannableString(source);
spannableSource.setSpan(what, 0, spannableSource.length(), Spanned.SPAN_POINT_POINT);
Spanned filtered = (Spanned) digitsKeyListener.filter(spannableSource,
0, spannableSource.length(), dest, 0, dest.length());
assertEquals("123", filtered.toString());
assertEquals(Spanned.SPAN_POINT_POINT, filtered.getSpanFlags(what));
assertEquals(0, filtered.getSpanStart(what));
assertEquals("123".length(), filtered.getSpanEnd(what));
assertNull(digitsKeyListener.filter("", 0, 0, dest, 0, dest.length()));
assertEquals(destString, dest.toString());
}
/*
* Check point:
* Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '+'.
* 1. filter "-123456", return null
* 2. filter "+123456", return null
* 3. filter "-a1.b2c3d", return "-123"
* 4. filter "-a1-b2c3d", return "-123"
* 5. filter "+a1-b2c3d", return "+123"
* 6. filter "5-a1-b2c3d", return "5123"
* 7. filter "5-a1+b2c3d", return "5123"
* 8. filter "+5-a1+b2c3d", return "+5123"
* 9. filter Spanned("5-a1-b2c3d"), return Spanned("5123") and copy spans.
* 10. filter "", return null
* 11. filter "-123456" but dest has '-' after dend, return ""
* 12. filter "-123456" but dest has '+' after dend, return ""
* 13. filter "-123456" but dest has '-' before dstart, return "123456"
* 14. filter "+123456" but dest has '-' before dstart, return "123456"
*/
public void testFilter2() {
String source = "-123456";
String destString = "dest string without sign and decimal";
DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(true, false);
SpannableString dest = new SpannableString(destString);
assertNull(digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length()));
assertEquals(destString, dest.toString());
source = "+123456";
assertNull(digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length()));
assertEquals(destString, dest.toString());
source = "-a1.b2c3d";
assertEquals("-123", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "-a1-b2c3d";
assertEquals("-123", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "+a1-b2c3d";
assertEquals("+123", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "5-a1-b2c3d";
assertEquals("5123", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "5-a1+b2c3d";
assertEquals("5123", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "+5-a1+b2c3d";
assertEquals("+5123", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "5-a1+b2c3d";
Object what = new Object();
Spannable spannableSource = new SpannableString(source);
spannableSource.setSpan(what, 0, spannableSource.length(), Spanned.SPAN_POINT_POINT);
Spanned filtered = (Spanned) digitsKeyListener.filter(spannableSource,
0, spannableSource.length(), dest, 0, dest.length());
assertEquals("5123", filtered.toString());
assertEquals(Spanned.SPAN_POINT_POINT, filtered.getSpanFlags(what));
assertEquals(0, filtered.getSpanStart(what));
assertEquals("5123".length(), filtered.getSpanEnd(what));
assertNull(digitsKeyListener.filter("", 0, 0, dest, 0, dest.length()));
assertEquals(destString, dest.toString());
source = "-123456";
String endSign = "789-";
dest = new SpannableString(endSign);
assertEquals("", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length() - 1)).toString());
assertEquals(endSign, dest.toString());
endSign = "789+";
dest = new SpannableString(endSign);
assertEquals("", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length() - 1)).toString());
assertEquals(endSign, dest.toString());
String startSign = "-789";
dest = new SpannableString(startSign);
assertEquals("123456", (digitsKeyListener.filter(source, 0, source.length(),
dest, 1, dest.length())).toString());
assertEquals(startSign, dest.toString());
source = "+123456";
dest = new SpannableString(startSign);
assertEquals("123456", (digitsKeyListener.filter(source, 0, source.length(),
dest, 1, dest.length())).toString());
assertEquals(startSign, dest.toString());
}
/*
* Check point:
* Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.'.
* 1. filter "123.456", return null
* 2. filter "-a1.b2c3d", return "1.23"
* 3. filter "+a1.b2c3d", return "1.23"
* 4. filter "a1.b2c3d.", return "123."
* 5. filter "5.a1.b2c3d", return "51.23"
* 6. filter Spanned("5.a1.b2c3d"), return Spanned("51.23") and copy spans.
* 7. filter "", return null
* 8. filter "123.456" but dest has '.' after dend, return "123456"
* 9. filter "123.456" but dest has '.' before dstart, return "123456"
*/
public void testFilter3() {
String source = "123.456";
String destString = "dest string without sign and decimal";
DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(false, true);
SpannableString dest = new SpannableString(destString);
assertNull(digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length()));
assertEquals(destString, dest.toString());
source = "-a1.b2c3d";
assertEquals("1.23", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "+a1.b2c3d";
assertEquals("1.23", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "a1.b2c3d.";
assertEquals("123.", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "5.a1.b2c3d";
assertEquals("51.23", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
Object what = new Object();
Spannable spannableSource = new SpannableString(source);
spannableSource.setSpan(what, 0, spannableSource.length(), Spanned.SPAN_POINT_POINT);
Spanned filtered = (Spanned) digitsKeyListener.filter(spannableSource,
0, spannableSource.length(), dest, 0, dest.length());
assertEquals("51.23", filtered.toString());
assertEquals(Spanned.SPAN_POINT_POINT, filtered.getSpanFlags(what));
assertEquals(0, filtered.getSpanStart(what));
assertEquals("51.23".length(), filtered.getSpanEnd(what));
assertNull(digitsKeyListener.filter("", 0, 0, dest, 0, dest.length()));
assertEquals(destString, dest.toString());
source = "123.456";
String endDecimal = "789.";
dest = new SpannableString(endDecimal);
assertEquals("123456", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length() - 1)).toString());
assertEquals(endDecimal, dest.toString());
String startDecimal = ".789";
dest = new SpannableString(startDecimal);
assertEquals("123456", (digitsKeyListener.filter(source, 0, source.length(),
dest, 1, dest.length())).toString());
assertEquals(startDecimal, dest.toString());
}
/*
* Check point:
* Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', '-',
* '+'.
* 1. filter "-123.456", return null
* 2. filter "+123.456", return null
* 3. filter "-a1.b2c3d", return "-1.23"
* 4. filter "+a1.b2c3d", return "+1.23"
* 5. filter "a1.b-2c+3d.", return "123."
* 6. filter "-5.a1.b2c+3d", return "-51.23"
* 7. filter "+5.a1.b2c-3d", return "+51.23"
* 8. filter Spanned("-5.a1.b2c3d"), return Spanned("-51.23") and copy spans.
* 9. filter "", return null
* 10. filter "-123.456" but dest has '.' after dend, return "-123456"
* 11. filter "-123.456" but dest has '.' before dstart, return "123456"
* 12. filter "+123.456" but dest has '.' after dend, return "+123456"
* 13. filter "+123.456" but dest has '.' before dstart, return "123456"
* 14. filter "-123.456" but dest has '-' after dend, return ""
* 15. filter "-123.456" but dest has '+' after dend, return ""
* 16. filter "-123.456" but dest has '-' before dstart, return "123.456"
* 17. filter "+123.456" but dest has '-' before dstart, return "123.456"
*/
public void testFilter4() {
String source = "-123.456";
String destString = "dest string without sign and decimal";
DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(true, true);
SpannableString dest = new SpannableString(destString);
assertNull(digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length()));
assertEquals(destString, dest.toString());
source = "+123.456";
assertNull(digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length()));
assertEquals(destString, dest.toString());
source = "-a1.b2c3d";
assertEquals("-1.23", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "a1.b-2c+3d.";
assertEquals("123.", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "-5.a1.b2c+3d";
assertEquals("-51.23", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "+5.a1.b2c-3d";
assertEquals("+51.23", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length())).toString());
assertEquals(destString, dest.toString());
source = "-5.a1.b2c+3d";
Object what = new Object();
Spannable spannableSource = new SpannableString(source);
spannableSource.setSpan(what, 0, spannableSource.length(), Spanned.SPAN_POINT_POINT);
Spanned filtered = (Spanned) digitsKeyListener.filter(spannableSource,
0, spannableSource.length(), dest, 0, dest.length());
assertEquals("-51.23", filtered.toString());
assertEquals(Spanned.SPAN_POINT_POINT, filtered.getSpanFlags(what));
assertEquals(0, filtered.getSpanStart(what));
assertEquals("-51.23".length(), filtered.getSpanEnd(what));
assertNull(digitsKeyListener.filter("", 0, 0, dest, 0, dest.length()));
assertEquals(destString, dest.toString());
source = "-123.456";
String endDecimal = "789.";
dest = new SpannableString(endDecimal);
assertEquals("-123456", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length() - 1)).toString());
assertEquals(endDecimal, dest.toString());
String startDecimal = ".789";
dest = new SpannableString(startDecimal);
assertEquals("123456", (digitsKeyListener.filter(source, 0, source.length(),
dest, 1, dest.length())).toString());
assertEquals(startDecimal, dest.toString());
source = "+123.456";
endDecimal = "789.";
dest = new SpannableString(endDecimal);
assertEquals("+123456", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length() - 1)).toString());
assertEquals(endDecimal, dest.toString());
startDecimal = ".789";
dest = new SpannableString(startDecimal);
assertEquals("123456", (digitsKeyListener.filter(source, 0, source.length(),
dest, 1, dest.length())).toString());
assertEquals(startDecimal, dest.toString());
source = "-123.456";
String endSign = "789-";
dest = new SpannableString(endSign);
assertEquals("", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length() - 1)).toString());
assertEquals(endSign, dest.toString());
endSign = "789+";
dest = new SpannableString(endSign);
assertEquals("", (digitsKeyListener.filter(source, 0, source.length(),
dest, 0, dest.length() - 1)).toString());
assertEquals(endSign, dest.toString());
String startSign = "-789";
dest = new SpannableString(startSign);
assertEquals("123.456", (digitsKeyListener.filter(source, 0, source.length(),
dest, 1, dest.length())).toString());
assertEquals(startSign, dest.toString());
source = "+123.456";
dest = new SpannableString(startSign);
assertEquals("123.456", (digitsKeyListener.filter(source, 0, source.length(),
dest, 1, dest.length())).toString());
assertEquals(startSign, dest.toString());
}
/*
* Scenario description:
* Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'.
* 1. Press '-' key and this key could not be accepted.
* 2. Press '1' key and check if the content of TextView becomes "1"
* 3. Press '.' key and this key could not be accepted.
* 4. Press '2' key and check if the content of TextView becomes "12"
*/
public void testDigitsKeyListener1() {
final DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance();
setKeyListenerSync(digitsKeyListener);
assertEquals("", mTextView.getText().toString());
// press '-' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_MINUS);
assertEquals("", mTextView.getText().toString());
// press '1' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_1);
assertEquals("1", mTextView.getText().toString());
// press '.' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_PERIOD);
assertEquals("1", mTextView.getText().toString());
// press '2' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_2);
assertEquals("12", mTextView.getText().toString());
}
/*
* Scenario description:
* Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '+'.
* 1. Press '-' key and check if the content of TextView becomes "-"
* 2. Press '1' key and check if the content of TextView becomes "-1"
* 3. Press '.' key and this key could not be accepted.
* 4. Press '+' key and this key could not be accepted.
* 5. Press '2' key and check if the content of TextView becomes "-12"
* 6. Press '-' key and this key could not be accepted,
* because text view accepts minus sign iff it at the beginning.
*/
public void testDigitsKeyListener2() {
final DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(true, false);
setKeyListenerSync(digitsKeyListener);
assertEquals("", mTextView.getText().toString());
// press '-' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_MINUS);
assertEquals("-", mTextView.getText().toString());
// press '1' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_1);
assertEquals("-1", mTextView.getText().toString());
// press '.' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_PERIOD);
assertEquals("-1", mTextView.getText().toString());
// press '+' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_PLUS);
assertEquals("-1", mTextView.getText().toString());
// press '2' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_2);
assertEquals("-12", mTextView.getText().toString());
// press '-' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_MINUS);
assertEquals("-12", mTextView.getText().toString());
}
/*
* Scenario description:
* Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.'.
* 1. Press '-' key and check if the content of TextView becomes ""
* 2. Press '+' key and check if the content of TextView becomes ""
* 3. Press '1' key and check if the content of TextView becomes "1"
* 4. Press '.' key and check if the content of TextView becomes "1."
* 5. Press '2' key and check if the content of TextView becomes "1.2"
* 6. Press '.' key and this key could not be accepted,
* because text view accepts only one decimal point per field.
*/
public void testDigitsKeyListener3() {
final DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(false, true);
setKeyListenerSync(digitsKeyListener);
assertEquals("", mTextView.getText().toString());
// press '-' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_MINUS);
assertEquals("", mTextView.getText().toString());
// press '+' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_PLUS);
assertEquals("", mTextView.getText().toString());
// press '1' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_1);
assertEquals("1", mTextView.getText().toString());
// press '.' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_PERIOD);
assertEquals("1.", mTextView.getText().toString());
// press '2' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_2);
assertEquals("1.2", mTextView.getText().toString());
// press '.' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_PERIOD);
assertEquals("1.2", mTextView.getText().toString());
}
/*
* Scenario description:
* Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '+',
* '.'.
* 1. Press '+' key and check if the content of TextView becomes "+"
* 2. Press '1' key and check if the content of TextView becomes "+1"
* 3. Press '.' key and this key could not be accepted.
* 4. Press '2' key and check if the content of TextView becomes "+12"
* 5. Press '-' key and this key could not be accepted,
* because text view accepts minus sign iff it at the beginning.
* 6. Press '.' key and this key could not be accepted,
* because text view accepts only one decimal point per field.
*/
public void testDigitsKeyListener4() {
final DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(true, true);
setKeyListenerSync(digitsKeyListener);
assertEquals("", mTextView.getText().toString());
// press '+' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_PLUS);
assertEquals("+", mTextView.getText().toString());
// press '1' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_1);
assertEquals("+1", mTextView.getText().toString());
// press '.' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_PERIOD);
assertEquals("+1.", mTextView.getText().toString());
// press '2' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_2);
assertEquals("+1.2", mTextView.getText().toString());
// press '-' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_MINUS);
assertEquals("+1.2", mTextView.getText().toString());
// press '.' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_PERIOD);
assertEquals("+1.2", mTextView.getText().toString());
}
/*
* Scenario description:
* Current accepted characters are '5', '6', '7', '8', '9'.
* 1. Press '1' key and this key could not be accepted.
* 2. Press '5' key and check if the content of TextView becomes "5"
* 3. Press '.' key and this key could not be accepted.
* 4. Press '-' key and this key could not be accepted.
* 5. remove DigitsKeyListener and Press '5' key, this key will not be accepted
*/
public void testDigitsKeyListener5() {
final String accepted = "56789";
final DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(accepted);
setKeyListenerSync(digitsKeyListener);
assertEquals("", mTextView.getText().toString());
// press '1' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_1);
assertEquals("", mTextView.getText().toString());
// press '5' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_5);
assertEquals("5", mTextView.getText().toString());
// press '.' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_PERIOD);
assertEquals("5", mTextView.getText().toString());
// press '-' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_MINUS);
assertEquals("5", mTextView.getText().toString());
// remove DigitsKeyListener
mActivity.runOnUiThread(new Runnable() {
public void run() {
mTextView.setKeyListener(null);
mTextView.requestFocus();
}
});
mInstrumentation.waitForIdleSync();
assertEquals("5", mTextView.getText().toString());
// press '5' key.
mKeyEventUtil.sendKeys(mTextView, KeyEvent.KEYCODE_5);
assertEquals("5", mTextView.getText().toString());
}
public void testGetInstance1() {
DigitsKeyListener listener1 = DigitsKeyListener.getInstance();
DigitsKeyListener listener2 = DigitsKeyListener.getInstance();
assertNotNull(listener1);
assertNotNull(listener2);
assertSame(listener1, listener2);
}
public void testGetInstance2() {
DigitsKeyListener listener1 = DigitsKeyListener.getInstance(true, true);
DigitsKeyListener listener2 = DigitsKeyListener.getInstance(true, true);
assertNotNull(listener1);
assertNotNull(listener2);
assertSame(listener1, listener2);
listener1 = DigitsKeyListener.getInstance(true, false);
listener2 = DigitsKeyListener.getInstance(true, false);
assertNotNull(listener1);
assertNotNull(listener2);
assertSame(listener1, listener2);
}
public void testGetInstance3() {
DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance("abcdefg");
assertNotNull(digitsKeyListener);
digitsKeyListener = DigitsKeyListener.getInstance("Android Test");
assertNotNull(digitsKeyListener);
}
public void testGetAcceptedChars() {
MockDigitsKeyListener mockDigitsKeyListener = new MockDigitsKeyListener();
final char[][] expected = new char[][] {
new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' },
new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '+' },
new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.' },
new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '+', '.' },
};
TextMethodUtils.assertEquals(expected[0], mockDigitsKeyListener.getAcceptedChars());
mockDigitsKeyListener = new MockDigitsKeyListener(true, false);
TextMethodUtils.assertEquals(expected[1], mockDigitsKeyListener.getAcceptedChars());
mockDigitsKeyListener = new MockDigitsKeyListener(false, true);
TextMethodUtils.assertEquals(expected[2], mockDigitsKeyListener.getAcceptedChars());
mockDigitsKeyListener = new MockDigitsKeyListener(true, true);
TextMethodUtils.assertEquals(expected[3], mockDigitsKeyListener.getAcceptedChars());
}
public void testGetInputType() {
DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(false, false);
int expected = InputType.TYPE_CLASS_NUMBER;
assertEquals(expected, digitsKeyListener.getInputType());
digitsKeyListener = DigitsKeyListener.getInstance(true, false);
expected = InputType.TYPE_CLASS_NUMBER
| InputType.TYPE_NUMBER_FLAG_SIGNED;
assertEquals(expected, digitsKeyListener.getInputType());
digitsKeyListener = DigitsKeyListener.getInstance(false, true);
expected = InputType.TYPE_CLASS_NUMBER
| InputType.TYPE_NUMBER_FLAG_DECIMAL;
assertEquals(expected, digitsKeyListener.getInputType());
digitsKeyListener = DigitsKeyListener.getInstance(true, true);
expected = InputType.TYPE_CLASS_NUMBER
| InputType.TYPE_NUMBER_FLAG_SIGNED
| InputType.TYPE_NUMBER_FLAG_DECIMAL;
assertEquals(expected, digitsKeyListener.getInputType());
}
/**
* A mocked {@link android.text.method.DigitsKeyListener} for testing purposes.
*
* Allows {@link DigitsKeyListenerTest} to call
* {@link android.text.method.DigitsKeyListener#getAcceptedChars()}.
*/
private class MockDigitsKeyListener extends DigitsKeyListener {
public MockDigitsKeyListener() {
super();
}
public MockDigitsKeyListener(boolean sign, boolean decimal) {
super(sign, decimal);
}
@Override
protected char[] getAcceptedChars() {
return super.getAcceptedChars();
}
}
}