am 2ed72048: Merge "Always return a valid index from Rfc822Tokenizer.findTokenEnd()"

* commit '2ed72048828cf9f617da971e5d2b8a062de08e5b':
  Always return a valid index from Rfc822Tokenizer.findTokenEnd()
This commit is contained in:
Brad Fitzpatrick
2011-04-04 10:17:43 -07:00
committed by Android Git Automerger
2 changed files with 19 additions and 2 deletions

View File

@@ -256,7 +256,7 @@ public class Rfc822Tokenizer implements MultiAutoCompleteTextView.Tokenizer {
if (c == '"') {
i++;
break;
} else if (c == '\\') {
} else if (c == '\\' && i + 1 < len) {
i += 2;
} else {
i++;
@@ -275,7 +275,7 @@ public class Rfc822Tokenizer implements MultiAutoCompleteTextView.Tokenizer {
} else if (c == '(') {
level++;
i++;
} else if (c == '\\') {
} else if (c == '\\' && i + 1 < len) {
i += 2;
} else {
i++;

View File

@@ -255,6 +255,23 @@ public class TextUtilsTest extends TestCase {
assertEquals("Foo Bar", tokens[0].getAddress());
}
@SmallTest
public void testRfc822FindToken() {
Rfc822Tokenizer tokenizer = new Rfc822Tokenizer();
// 0 1 2 3 4
// 0 1234 56789012345678901234 5678 90123456789012345
String address = "\"Foo\" <foo@google.com>, \"Bar\" <bar@google.com>";
assertEquals(0, tokenizer.findTokenStart(address, 21));
assertEquals(22, tokenizer.findTokenEnd(address, 21));
assertEquals(24, tokenizer.findTokenStart(address, 25));
assertEquals(46, tokenizer.findTokenEnd(address, 25));
}
@SmallTest
public void testRfc822FindTokenWithError() {
assertEquals(9, new Rfc822Tokenizer().findTokenEnd("\"Foo Bar\\", 0));
}
@LargeTest
public void testEllipsize() {
CharSequence s1 = "The quick brown fox jumps over \u00FEhe lazy dog.";