blob: 3eac36a135f029ba7ac499540118a36996b66f15 [file] [log] [blame]
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed 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 android.content.cts;
import java.io.IOException;
import org.xmlpull.v1.XmlPullParserException;
import android.content.Context;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.content.res.Resources.NotFoundException;
import android.test.AndroidTestCase;
import android.util.AttributeSet;
import android.util.Xml;
import com.android.cts.stub.R;
import com.android.internal.util.XmlUtils;
import dalvik.annotation.TestTargets;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetNew;
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.ToBeFixed;
@TestTargetClass(Context.class)
public class ContextTest extends AndroidTestCase {
private Context mContext;
@Override
protected void setUp() throws Exception {
super.setUp();
mContext = getContext();
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test getString(int, Object...) and getString(int).",
method = "getString",
args = {int.class, java.lang.Object[].class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test getString(int, Object...) and getString(int).",
method = "getString",
args = {int.class}
)
})
@ToBeFixed(bug = "1417734", explanation = "Unexpected NotFoundException")
public void testGetString() {
String testString = mContext.getString(R.string.context_test_string1);
assertEquals("This is %s string.", testString);
testString = mContext.getString(R.string.context_test_string1, "expected");
assertEquals("This is expected string.", testString);
testString = mContext.getString(R.string.context_test_string2);
assertEquals("This is test string.", testString);
// Test wrong resource id
try {
testString = mContext.getString(0, "expected");
fail("Wrong resource id should not be accepted.");
} catch (NotFoundException e) {
}
// Test wrong resource id
try {
testString = mContext.getString(0);
fail("Wrong resource id should not be accepted.");
} catch (NotFoundException e) {
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test getText(int).",
method = "getText",
args = {int.class}
)
@ToBeFixed(bug = "1417734", explanation = "Unexpected NotFoundException")
public void testGetText() {
CharSequence testCharSequence = mContext.getText(R.string.context_test_string2);
assertEquals("This is test string.", testCharSequence.toString());
// Test wrong resource id
try {
testCharSequence = mContext.getText(0);
fail("Wrong resource id should not be accepted.");
} catch (NotFoundException e) {
}
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "obtainStyledAttributes",
args = {int[].class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "obtainStyledAttributes",
args = {int.class, int[].class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "obtainStyledAttributes",
args = {android.util.AttributeSet.class, int[].class, int.class, int.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "obtainStyledAttributes",
args = {android.util.AttributeSet.class, int[].class}
)
})
@ToBeFixed(bug=" ", explanation = "Wrong resource ID can not result in a exception.")
public void testObtainStyledAttributes() {
// Test obtainStyledAttributes(int[])
TypedArray testTypedArray = mContext
.obtainStyledAttributes(com.android.internal.R.styleable.View);
assertNotNull(testTypedArray);
assertTrue(testTypedArray.length() > 2);
assertTrue(testTypedArray.length() > 0);
testTypedArray.recycle();
// Test obtainStyledAttributes(int, int[])
testTypedArray = mContext.obtainStyledAttributes(android.R.style.TextAppearance_Small,
com.android.internal.R.styleable.TextAppearance);
assertNotNull(testTypedArray);
assertTrue(testTypedArray.length() > 2);
testTypedArray.recycle();
// Test wrong null array pointer
try {
testTypedArray = mContext.obtainStyledAttributes(-1, null);
fail("obtainStyledAttributes will throw a NullPointerException here.");
} catch (NullPointerException e) {
}
// Test obtainStyledAttributes(AttributeSet, int[]) with unavailable resource id.
int testInt[] = { 0, 0 };
testTypedArray = mContext.obtainStyledAttributes(-1, testInt);
// fail("Wrong resource id should not be accepted.");
assertNotNull(testTypedArray);
assertEquals(2, testTypedArray.length());
testTypedArray.recycle();
// Test obtainStyledAttributes(AttributeSet, int[])
testTypedArray = mContext.obtainStyledAttributes(getAttributeSet(R.layout.context_layout),
com.android.internal.R.styleable.DatePicker);
assertNotNull(testTypedArray);
assertEquals(2, testTypedArray.length());
testTypedArray.recycle();
// Test obtainStyledAttributes(AttributeSet, int[], int, int)
testTypedArray = mContext.obtainStyledAttributes(getAttributeSet(R.layout.context_layout),
com.android.internal.R.styleable.DatePicker, 0, 0);
assertNotNull(testTypedArray);
assertEquals(2, testTypedArray.length());
testTypedArray.recycle();
}
private AttributeSet getAttributeSet(int resourceId) {
final XmlResourceParser parser = getContext().getResources().getXml(
resourceId);
try {
XmlUtils.beginDocument(parser, "RelativeLayout");
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
final AttributeSet attr = Xml.asAttributeSet(parser);
assertNotNull(attr);
return attr;
}
}