Merge change I808651dc into eclair-mr2

* changes:
  bug #2180646: make comparing "404-04" and "40404" return true in PhoneNumberUtils.compare().
This commit is contained in:
Android (Google) Code Review
2009-10-23 14:31:49 -04:00
2 changed files with 14 additions and 4 deletions

View File

@@ -378,6 +378,8 @@ public class PhoneNumberUtils
compareLoosely(String a, String b) {
int ia, ib;
int matched;
int numNonDialableCharsInA = 0;
int numNonDialableCharsInB = 0;
if (a == null || b == null) return a == b;
@@ -398,6 +400,7 @@ public class PhoneNumberUtils
if (!isDialable(ca)) {
ia--;
skipCmp = true;
numNonDialableCharsInA++;
}
cb = b.charAt(ib);
@@ -405,6 +408,7 @@ public class PhoneNumberUtils
if (!isDialable(cb)) {
ib--;
skipCmp = true;
numNonDialableCharsInB++;
}
if (!skipCmp) {
@@ -416,13 +420,16 @@ public class PhoneNumberUtils
}
if (matched < MIN_MATCH) {
int aLen = a.length();
int effectiveALen = a.length() - numNonDialableCharsInA;
int effectiveBLen = b.length() - numNonDialableCharsInB;
// if the input strings match, but their lengths < MIN_MATCH,
// treat them as equal.
if (aLen == b.length() && aLen == matched) {
// if the number of dialable chars in a and b match, but the matched chars < MIN_MATCH,
// treat them as equal (i.e. 404-04 and 40404)
if (effectiveALen == effectiveBLen && effectiveALen == matched) {
return true;
}
return false;
}

View File

@@ -314,6 +314,9 @@ public class PhoneNumberUtilsTest extends TestCase {
// 444 is not a valid country code, but
// matchIntlPrefixAndCC doesnt know this
assertTrue(PhoneNumberUtils.compare("+444 207 792 3490", "0 207 792 3490"));
// compare SMS short code
assertTrue(PhoneNumberUtils.compare("404-04", "40404"));
}