/*
* 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 org.apache.harmony.tests.java.text;
import java.text.AttributedCharacterIterator;
import java.text.AttributedString;
import java.text.CharacterIterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.WeakHashMap;
public class AttributedStringTest extends junit.framework.TestCase {
/**
* @tests java.text.AttributedString#AttributedString(java.lang.String)
*/
public void test_ConstructorLjava_lang_String() {
String test = "Test string";
AttributedString attrString = new AttributedString(test);
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));
}
/**
* @tests java.text.AttributedString#AttributedString(AttributedCharacterIterator)
*/
public void test_ConstructorLAttributedCharacterIterator() {
//Regression for HARMONY-1354
assertNotNull(new AttributedString(new testAttributedCharacterIterator()));
}
/**
* @tests java.text.AttributedString#AttributedString(AttributedCharacterIterator, int, int)
*/
public void test_ConstructorLAttributedCharacterIteratorII() {
//Regression for HARMONY-1355
assertNotNull(new AttributedString(new testAttributedCharacterIterator(), 0, 0));
}
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());
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
}
}
}