blob: d1e23b7fe0711845e5f4f25c5d92d46e07bd83e0 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 libcore.java.text;
import java.text.AttributedCharacterIterator;
import java.text.AttributedString;
import java.text.CharacterIterator;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.WeakHashMap;
public class OldAttributedStringTest extends junit.framework.TestCase {
static void assertEqualString (String msg, String expected, AttributedString attrString) {
AttributedCharacterIterator it = attrString.getIterator();
StringBuffer buf = new StringBuffer();
buf.append(it.first());
char ch;
while ((ch = it.next()) != CharacterIterator.DONE)
buf.append(ch);
assertEquals(msg, expected, buf.toString());
}
public void test_ConstructorLAttributedCharacterIterator_1() {
String testString = "Test string";
AttributedString attrString = new AttributedString(testString);
AttributedCharacterIterator iter = attrString.getIterator();
AttributedString attrString2 = new AttributedString(iter);
assertEqualString("String must match!", testString, attrString2);
}
public void test_ConstructorLAttributedCharacterIterator_2() {
String testString = "Test string";
AttributedString attrString = new AttributedString(testString);
AttributedCharacterIterator iter = attrString.getIterator();
AttributedString attrString2 = new AttributedString(iter, 2, 7);
assertEqualString("String must match!", "st st", attrString2);
}
/**
* @tests java.text.AttributedString#AttributedString(AttributedCharacterIterator,
* int, int) Test of method
* java.text.AttributedString#AttributedString(AttributedCharacterIterator,
* int, int). Case 1: Try to consruct AttributedString. Case 2: Try
* to consruct AttributedString using incorrect beginIndex. Case 3:
* Try to consruct AttributedString using incorrect endIndex.
*/
public void test_ConstructorLAttributedCharacterIteratorII() {
// Regression for HARMONY-1355
// case 1: Try to consruct AttributedString.
try {
new AttributedString(new testAttributedCharacterIterator(), 0, 0);
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
// case 2: Try to consruct AttributedString using incorrect beginIndex.
try {
new AttributedString(new testAttributedCharacterIterator(), -1, 0);
fail("Expected IllegalArgumentException was not thrown");
} catch (IllegalArgumentException e) {
// expected
}
// case 3: Try to consruct AttributedString using incorrect endIndex.
try {
new AttributedString(new testAttributedCharacterIterator(), 0, -1);
fail("Expected IllegalArgumentException was not thrown");
} catch (IllegalArgumentException e) {
// expected
}
}
public void test_ConstructorLAttributedCharacterIterator_3() {
String testString = "Test string";
AttributedString attrString = new AttributedString(testString);
AttributedCharacterIterator iter = attrString.getIterator();
AttributedString attrString2;
attrString2 = new AttributedString(iter, 2, 7, new AttributedCharacterIterator.Attribute[] {});
assertEqualString("String must match!", "st st", attrString2);
attrString2 = new AttributedString(iter, 2, 7, null);
assertEqualString("String must match!", "st st", attrString2);
}
/**
* @tests java.text.AttributedString#AttributedString(AttributedCharacterIterator,
* int, int, AttributedCharacterIterator.Attribute[]) Test of method
* java.text.AttributedString#AttributedString(AttributedCharacterIterator,
* int, int, AttributedCharacterIterator.Attribute[]). Case 1: Try to
* consruct AttributedString. Case 2: Try to consruct
* AttributedString using incorrect beginIndex. Case 3: Try to
* consruct AttributedString using incorrect endIndex. Case 4: Try to
* consruct AttributedString using specified attributes.
*/
public void test_ConstructorLAttributedCharacterIteratorII$Ljava_text_AttributedCharacterIterator$Attribute() {
// case 1: Try to consruct AttributedString.
try {
new AttributedString(new testAttributedCharacterIterator(), 0, 0,
null);
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
// case 2: Try to consruct AttributedString using incorrect beginIndex.
try {
new AttributedString(new testAttributedCharacterIterator(), -1, 0,
null);
fail("Expected IllegalArgumentException was not thrown");
} catch (IllegalArgumentException e) {
// expected
}
// case 3: Try to consruct AttributedString using incorrect endIndex.
try {
new AttributedString(new testAttributedCharacterIterator(), 0, -1,
null);
fail("Expected IllegalArgumentException was not thrown");
} catch (IllegalArgumentException e) {
// expected
}
// case 4: Try to consruct AttributedString using specified attributes.
try {
AttributedCharacterIterator.Attribute[] attributes = new AttributedCharacterIterator.Attribute[1];
attributes[0] = new TestAttributedCharacterIteratorAttribute("test");
new AttributedString(new testAttributedCharacterIterator(), 0, 0,
attributes);
} catch (IllegalArgumentException e) {
fail("Unexpected expected " + e.toString());
}
}
/**
* @tests java.text.AttributedString#AttributedString(AttributedCharacterIterator,
* int, int, Map<? extends AttributedCharacterIterator.Attribute,?>)
* Test of method
* java.text.AttributedString#AttributedString(AttributedCharacterIterator,
* int, int, Map<? extends
* AttributedCharacterIterator.Attribute,?>). Case 1: Try to
* construct AttributedString. Case 2: Try to construct
* AttributedString using 0-length text and not an empty Map
* attributes.
*/
public void test_ConstructorLjava_lang_StringLjava_util_Map() {
String test = "Test string";
// case 1: Try to construct AttributedString
try {
AttributedString attrString = new AttributedString(
test,
new WeakHashMap<AttributedCharacterIterator.Attribute, String>());
AttributedCharacterIterator it = attrString.getIterator();
StringBuffer buf = new StringBuffer();
buf.append(it.first());
char ch;
while ((ch = it.next()) != CharacterIterator.DONE)
buf.append(ch);
assertTrue("Wrong string: " + buf, buf.toString().equals(test));
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
// case 2: Try to construct AttributedString using 0-length text and
// not an empty Map attributes.
try {
Map<AttributedCharacterIterator.Attribute, String> whm = new WeakHashMap<AttributedCharacterIterator.Attribute, String>();
whm.put(new TestAttributedCharacterIteratorAttribute("test"),
"value");
new AttributedString("", whm);
fail("Expected IllegalArgumentException was not thrown");
} catch (Exception e) {
// expected
}
}
private class TestAttributedCharacterIteratorAttribute extends
AttributedCharacterIterator.Attribute {
private static final long serialVersionUID = -2917613373935785179L;
public TestAttributedCharacterIteratorAttribute(String name) {
super(name);
}
}
private class testAttributedCharacterIterator implements
AttributedCharacterIterator {
public Set getAllAttributeKeys() {
return null;
}
public Object getAttribute(AttributedCharacterIterator.Attribute p) {
return null;
}
public Map getAttributes() {
return null;
}
public int getRunLimit(Set p) {
return 0;
}
public int getRunLimit(AttributedCharacterIterator.Attribute p) {
return 0;
}
public int getRunLimit() {
return 0;
}
public int getRunStart(Set p) {
return 0;
}
public int getRunStart(AttributedCharacterIterator.Attribute p) {
return 0;
}
public int getRunStart() {
return 0;
}
public Object clone() {
return null;
}
public int getIndex() {
return 0;
}
public int getEndIndex() {
return 0;
}
public int getBeginIndex() {
return 0;
}
public char setIndex(int p) {
return 'a';
}
public char previous() {
return 'a';
}
public char next() {
return 'a';
}
public char current() {
return 'a';
}
public char last() {
return 'a';
}
public char first() {
return 'a';
}
}
public void test_addAttributeLjava_text_AttributedCharacterIterator$AttributeLjava_lang_ObjectII() {
AttributedString as = new AttributedString("test");
as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, "a", 2,
3);
AttributedCharacterIterator it = as.getIterator();
assertEquals("non-null value limit", 2, it
.getRunLimit(AttributedCharacterIterator.Attribute.LANGUAGE));
as = new AttributedString("test");
as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, null,
2, 3);
it = as.getIterator();
assertEquals("null value limit", 4, it
.getRunLimit(AttributedCharacterIterator.Attribute.LANGUAGE));
try {
as = new AttributedString("test");
as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE,
null, -1, 3);
fail("Expected IllegalArgumentException");
} catch (IllegalArgumentException e) {
// Expected
}
// regression for Harmony-1244
as = new AttributedString("123", new WeakHashMap());
try {
as.addAttribute(null, new TreeSet(), 0, 1);
fail("should throw NullPointerException");
} catch (NullPointerException e) {
// expected
}
try {
as.addAttribute(null, new TreeSet(), -1, 1);
fail("should throw NullPointerException");
} catch (NullPointerException e) {
// expected
}
}
/**
* @tests java.text.AttributedString.addAttribute(AttributedCharacterIterator,
* Object)
*/
public void test_addAttributeLjava_text_AttributedCharacterIterator$AttributeLjava_lang_Object() {
// regression for Harmony-1244
AttributedString as = new AttributedString("123", new WeakHashMap());
as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, "english");
as.addAttribute(AttributedCharacterIterator.Attribute.INPUT_METHOD_SEGMENT,
"input method");
as.addAttribute(AttributedCharacterIterator.Attribute.READING, "reading");
try {
as.addAttribute(null, new TreeSet());
fail("should throw NullPointerException");
} catch (NullPointerException e) {
// expected
}
try {
as.addAttribute(null, null);
fail("should throw NullPointerException");
} catch (NullPointerException e) {
// expected
}
}
/**
* @tests java.text.AttributedString#addAttributes(Map<? extends
* AttributedCharacterIterator.Attribute,?>, int, int) Tests of
* method java.text.AttributedString#addAttributes(Map<? extends
* AttributedCharacterIterator.Attribute,?>, int, int). Case 1: Try
* to add attributes to AttributesString. Case 2: Try to add
* null-attributes to AttributesString. Case 3: Try to add attributes
* to AttributesString using incorrect index.
*/
public void test_addAttributesLjava_util_MapII() {
AttributedString as = new AttributedString("test");
Map<AttributedCharacterIterator.Attribute, String> whm = new WeakHashMap<AttributedCharacterIterator.Attribute, String>();
// case 1: Try to add attributes to AttributesString.
try {
whm.put(new TestAttributedCharacterIteratorAttribute("test1"),
"value1");
whm.put(new TestAttributedCharacterIteratorAttribute("test2"),
"value2");
whm.put(new TestAttributedCharacterIteratorAttribute("test3"),
"value3");
as.addAttributes(whm, 0, 3);
} catch (Exception e) {
fail("Unexpected exception " + e.toString());
}
// case 2: Try to add null-attributes to AttributesString.
try {
as.addAttributes(null, 0, 3);
fail("Expected NullPointerException was not thrown");
} catch (NullPointerException e) {
// expected
}
// case 3: Try to add attributes to AttributesString using incorrect
// index.
try {
as.addAttributes(whm, 0, 0);
fail("Expected IllegalArgumentException was not thrown");
} catch (IllegalArgumentException e) {
// expected
}
}
/**
* @tests java.text.AttributedString#getIterator() Test of method
* java.text.AttributedString#getIterator().
*/
public void test_getIterator() {
String test = "Test string";
try {
AttributedString attrString = new AttributedString(test);
AttributedCharacterIterator it = attrString.getIterator();
assertEquals("Incorrect iteration on AttributedString", it.first(),
test.charAt(0));
} catch (Exception e) {
fail("Unexpected exceptiption " + e.toString());
}
}
/**
* @tests java.text.AttributedString#getIterator(AttributedCharacterIterator.Attribute[])
* Test of method
* java.text.AttributedString#getIterator(AttributedCharacterIterator.Attribute[]).
*/
public void test_getIterator$Ljava_text_AttributedCharacterIterator$Attribute() {
String test = "Test string";
try {
Map<AttributedCharacterIterator.Attribute, String> hm = new HashMap<AttributedCharacterIterator.Attribute, String>();
AttributedCharacterIterator.Attribute[] aci = new AttributedCharacterIterator.Attribute[3];
aci[0] = new TestAttributedCharacterIteratorAttribute("att1");
aci[1] = new TestAttributedCharacterIteratorAttribute("att2");
aci[2] = new TestAttributedCharacterIteratorAttribute("att3");
hm.put(aci[0], "value1");
hm.put(aci[1], "value2");
AttributedString attrString = new AttributedString(test, hm);
AttributedCharacterIterator it = attrString.getIterator(aci);
assertTrue("Incorrect iteration on AttributedString", it
.getAttribute(aci[0]).equals("value1"));
assertTrue("Incorrect iteration on AttributedString", it
.getAttribute(aci[1]).equals("value2"));
assertTrue("Incorrect iteration on AttributedString", it
.getAttribute(aci[2]) == null);
} catch (Exception e) {
fail("Unexpected exceptiption " + e.toString());
}
}
/**
* @tests java.text.AttributedString#getIterator(AttributedCharacterIterator.Attribute[],
* int, int) Test of method
* java.text.AttributedString#getIterator(AttributedCharacterIterator.Attribute[],
* int, int).
*/
public void test_getIterator$Ljava_text_AttributedCharacterIterator$AttributeII() {
String test = "Test string";
try {
Map<AttributedCharacterIterator.Attribute, String> hm = new HashMap<AttributedCharacterIterator.Attribute, String>();
AttributedCharacterIterator.Attribute[] aci = new AttributedCharacterIterator.Attribute[3];
aci[0] = new TestAttributedCharacterIteratorAttribute("att1");
aci[1] = new TestAttributedCharacterIteratorAttribute("att2");
aci[2] = new TestAttributedCharacterIteratorAttribute("att3");
hm.put(aci[0], "value1");
hm.put(aci[1], "value2");
AttributedString attrString = new AttributedString(test);
attrString.addAttributes(hm, 2, 4);
AttributedCharacterIterator it = attrString.getIterator(aci, 1, 5);
assertTrue("Incorrect iteration on AttributedString", it
.getAttribute(aci[0]) == null);
assertTrue("Incorrect iteration on AttributedString", it
.getAttribute(aci[1]) == null);
assertTrue("Incorrect iteration on AttributedString", it
.getAttribute(aci[2]) == null);
it.next();
assertTrue("Incorrect iteration on AttributedString", it
.getAttribute(aci[0]).equals("value1"));
assertTrue("Incorrect iteration on AttributedString", it
.getAttribute(aci[1]).equals("value2"));
assertTrue("Incorrect iteration on AttributedString", it
.getAttribute(aci[2]) == null);
try {
attrString.getIterator(aci, -1, 5);
fail("IllegalArgumentException is not thrown.");
} catch(IllegalArgumentException iae) {
//expected
}
try {
attrString.getIterator(aci, 6, 5);
fail("IllegalArgumentException is not thrown.");
} catch(IllegalArgumentException iae) {
//expected
}
try {
attrString.getIterator(aci, 3, 2);
fail("IllegalArgumentException is not thrown.");
} catch(IllegalArgumentException iae) {
//expected
}
} catch (Exception e) {
fail("Unexpected exceptiption " + e.toString());
}
}
}