blob: e7c5f5cbc467aab5b738f4ae5e81f1e7e9b9b200 [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 org.apache.harmony.nio_char.tests.java.nio.charset;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.TestTargetNew;
import junit.framework.TestCase;
import tests.util.TestEnvironment;
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
@TestTargetClass(Charset.class)
public class CharsetTest extends TestCase {
// Will contain names of charsets registered with IANA
Set knownRegisteredCharsets = new HashSet();
// Will contain names of charsets not known to be registered with IANA
Set unknownRegisteredCharsets = new HashSet();
/**
* JUnit set-up method
*/
public void setUp() {
TestEnvironment.reset();
// Populate the known charset vars
Set names = Charset.availableCharsets().keySet();
for (Iterator nameItr = names.iterator(); nameItr.hasNext();) {
String name = (String) nameItr.next();
if (name.toLowerCase().startsWith("x-"))
unknownRegisteredCharsets.add(name);
else
knownRegisteredCharsets.add(name);
}
}
/**
* @tests java.nio.charset.Charset#isRegistered()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "isRegistered",
args = {}
)
public void test_isRegistered() {
// Regression for HARMONY-45
for (Iterator nameItr = knownRegisteredCharsets.iterator(); nameItr.hasNext();) {
String name = (String) nameItr.next();
assertTrue("Assert 0: isRegistered() failed for " + name,
Charset.forName(name).isRegistered());
}
for (Iterator nameItr = unknownRegisteredCharsets.iterator(); nameItr.hasNext();) {
String name = (String) nameItr.next();
assertFalse("Assert 0: isRegistered() failed for " + name,
Charset.forName(name).isRegistered());
}
}
/**
* @tests java.nio.charset.Charset#isSupported(String)
*/
@TestTargetNew(
level = TestLevel.PARTIAL,
notes = "Checks IllegalCharsetNameException",
method = "isSupported",
args = {java.lang.String.class}
)
public void testIsSupported_EmptyString() {
// Regression for HARMONY-113
try {
Charset.isSupported("");
fail("Assert 0: Should throw IllegalCharsetNameException");
} catch (IllegalCharsetNameException e) {
// Expected
}
}
/**
* @tests java.nio.charset.Charset#defaultCharset()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "defaultCharset",
args = {}
)
public void test_defaultCharset() {
String charsetName = null;
String defaultCharsetName = null;
String oldDefaultEncoding = System.getProperty("file.encoding");
try {
// Normal behavior
charsetName = "UTF-8"; //$NON-NLS-1$
System.setProperty("file.encoding", charsetName);//$NON-NLS-1$
defaultCharsetName = Charset.defaultCharset().name();
assertEquals(charsetName, defaultCharsetName);
charsetName = "ISO-8859-1"; //$NON-NLS-1$
System.setProperty("file.encoding", charsetName);//$NON-NLS-1$
defaultCharsetName = Charset.defaultCharset().name();
assertEquals(charsetName, defaultCharsetName);
// Unsupported behavior
charsetName = "IMPOSSIBLE-8"; //$NON-NLS-1$
System.setProperty("file.encoding", charsetName);//$NON-NLS-1$
defaultCharsetName = Charset.defaultCharset().name();
assertEquals("UTF-8", defaultCharsetName);
// Null behavior
try {
Properties currentProps = System.getProperties();
currentProps.remove("file.encoding");//$NON-NLS-1$
Charset.defaultCharset().name();
fail("Should throw illegal IllegalArgumentException");//$NON-NLS-1$
} catch (IllegalArgumentException e) {
// expected
}
// IllegalCharsetName behavior
try {
charsetName = "IMP~~OSSIBLE-8"; //$NON-NLS-1$
System.setProperty("file.encoding", charsetName);//$NON-NLS-1$
Charset.defaultCharset().name();
fail("Should throw IllegalCharsetNameException");//$NON-NLS-1$
} catch (IllegalCharsetNameException e) {
// expected
}
} finally {
System.setProperty("file.encoding", oldDefaultEncoding);//$NON-NLS-1$
}
}
/**
* @tests java.nio.charset.Charset#forName(java.lang.String)
*/
@TestTargetNew(
level = TestLevel.PARTIAL,
notes = "Exceptions checking missed.",
method = "forName",
args = {java.lang.String.class}
)
public void test_forNameLjava_lang_String() {
/*
* invoke forName two times with the same canonical name, it
* should return the same reference.
*/
Charset cs1 = Charset.forName("UTF-8");
Charset cs2 = Charset.forName("UTF-8");
assertSame(cs1, cs2);
/*
* test forName: invoke forName two times for the same Charset using
* canonical name and alias, it should return the same reference.
*/
Charset cs3 = Charset.forName("ASCII");
Charset cs4 = Charset.forName("US-ASCII");
assertSame(cs3, cs4);
}
}