blob: 5c77d94bdc933499265f25892096f010c4c2fd02 [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.location.cts;
import java.util.Locale;
import junit.framework.TestCase;
import android.location.Address;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import dalvik.annotation.TestTargets;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetNew;
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.ToBeFixed;
/**
* Test the main functionalities of the AddressTest.
*/
@TestTargetClass(Address.class)
public class AddressTest extends TestCase {
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test constructor",
method = "Address",
args = {java.util.Locale.class}
)
public void testConstructor() {
new Address(Locale.ENGLISH);
new Address(Locale.FRANCE);
new Address(null);
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test describeContents()",
method = "describeContents",
args = {}
)
public void testDescribeContents() {
Address address = new Address(Locale.GERMAN);
assertEquals(0, address.describeContents());
Bundle extras = new Bundle();
extras.putParcelable("key1", new MockParcelable());
address.setExtras(extras);
assertEquals(extras.describeContents(), address.describeContents());
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setAdminArea(String) and getAdminArea()",
method = "setAdminArea",
args = {java.lang.String.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setAdminArea(String) and getAdminArea()",
method = "getAdminArea",
args = {}
)
})
public void testAccessAdminArea() {
Address address = new Address(Locale.ITALY);
String adminArea = "CA";
address.setAdminArea(adminArea);
assertEquals(adminArea, address.getAdminArea());
address.setAdminArea(null);
assertNull(address.getAdminArea());
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setCountryCode(String) and getCountryCode()",
method = "setCountryCode",
args = {java.lang.String.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setCountryCode(String) and getCountryCode()",
method = "getCountryCode",
args = {}
)
})
public void testAccessCountryCode() {
Address address = new Address(Locale.JAPAN);
String countryCode = "US";
address.setCountryCode(countryCode);
assertEquals(countryCode, address.getCountryCode());
address.setCountryCode(null);
assertNull(address.getCountryCode());
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setCountryName(String) and getCountryName()",
method = "setCountryName",
args = {java.lang.String.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setCountryName(String) and getCountryName()",
method = "getCountryName",
args = {}
)
})
public void testAccessCountryName() {
Address address = new Address(Locale.KOREA);
String countryName = "China";
address.setCountryName(countryName);
assertEquals(countryName, address.getCountryName());
address.setCountryName(null);
assertNull(address.getCountryName());
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setExtras(Bundle) and getExtras()",
method = "setExtras",
args = {android.os.Bundle.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setExtras(Bundle) and getExtras()",
method = "getExtras",
args = {}
)
})
public void testAccessExtras() {
Address address = new Address(Locale.TAIWAN);
Bundle extras = new Bundle();
extras.putBoolean("key1", false);
byte b = 10;
extras.putByte("key2", b);
address.setExtras(extras);
Bundle actual = address.getExtras();
assertFalse(actual.getBoolean("key1"));
assertEquals(b, actual.getByte("key2"));
address.setExtras(null);
assertNull(address.getExtras());
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setFeatureName(String) and getFeatureName()",
method = "setFeatureName",
args = {java.lang.String.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setFeatureName(String) and getFeatureName()",
method = "getFeatureName",
args = {}
)
})
public void testAccessFeatureName() {
Address address = new Address(Locale.SIMPLIFIED_CHINESE);
String featureName = "Golden Gate Bridge";
address.setFeatureName(featureName);
assertEquals(featureName, address.getFeatureName());
address.setFeatureName(null);
assertNull(address.getFeatureName());
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setLatitude(double) and getLatitude(), clearLatitude(), hasLatitude()",
method = "setLatitude",
args = {double.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setLatitude(double) and getLatitude(), clearLatitude(), hasLatitude()",
method = "getLatitude",
args = {}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setLatitude(double) and getLatitude(), clearLatitude(), hasLatitude()",
method = "clearLatitude",
args = {}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setLatitude(double) and getLatitude(), clearLatitude(), hasLatitude()",
method = "hasLatitude",
args = {}
)
})
public void testAccessLatitude() {
Address address = new Address(Locale.CHINA);
assertFalse(address.hasLatitude());
double latitude = 1.23456789;
address.setLatitude(latitude);
assertTrue(address.hasLatitude());
assertEquals(latitude, address.getLatitude());
address.clearLatitude();
assertFalse(address.hasLatitude());
try {
address.getLatitude();
fail("should throw IllegalStateException.");
} catch (IllegalStateException e) {
}
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "setLongitude",
args = {double.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getLongitude",
args = {}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "clearLongitude",
args = {}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "hasLongitude",
args = {}
)
})
public void testAccessLongitude() {
Address address = new Address(Locale.CHINA);
assertFalse(address.hasLongitude());
double longitude = 1.23456789;
address.setLongitude(longitude);
assertTrue(address.hasLongitude());
assertEquals(longitude, address.getLongitude());
address.clearLongitude();
assertFalse(address.hasLongitude());
try {
address.getLongitude();
fail("should throw IllegalStateException.");
} catch (IllegalStateException e) {
}
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setPhone(String) and getPhone()",
method = "setPhone",
args = {java.lang.String.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setPhone(String) and getPhone()",
method = "getPhone",
args = {}
)
})
@ToBeFixed(bug = "", explanation = "getPhone() should never throw IllegalStateException. " +
"Should remove @throws clause from its javadoc")
public void testAccessPhone() {
Address address = new Address(Locale.CHINA);
String phone = "+86-13512345678";
address.setPhone(phone);
assertEquals(phone, address.getPhone());
address.setPhone(null);
assertNull(address.getPhone());
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setPostalCode(String) and getPostalCode()",
method = "setPostalCode",
args = {java.lang.String.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setPostalCode(String) and getPostalCode()",
method = "getPostalCode",
args = {}
)
})
public void testAccessPostalCode() {
Address address = new Address(Locale.CHINA);
String postalCode = "93110";
address.setPostalCode(postalCode);
assertEquals(postalCode, address.getPostalCode());
address.setPostalCode(null);
assertNull(address.getPostalCode());
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setThoroughfare(String) and getThoroughfare()",
method = "setThoroughfare",
args = {java.lang.String.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setThoroughfare(String) and getThoroughfare()",
method = "getThoroughfare",
args = {}
)
})
public void testAccessThoroughfare() {
Address address = new Address(Locale.CHINA);
String thoroughfare = "1600 Ampitheater Parkway";
address.setThoroughfare(thoroughfare);
assertEquals(thoroughfare, address.getThoroughfare());
address.setThoroughfare(null);
assertNull(address.getThoroughfare());
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setUrl(String) and getUrl()",
method = "setUrl",
args = {java.lang.String.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setUrl(String) and getUrl()",
method = "getUrl",
args = {}
)
})
public void testAccessUrl() {
Address address = new Address(Locale.CHINA);
String Url = "Url";
address.setUrl(Url);
assertEquals(Url, address.getUrl());
address.setUrl(null);
assertNull(address.getUrl());
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setSubAdminArea(String) and getSubAdminArea()",
method = "setSubAdminArea",
args = {java.lang.String.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setSubAdminArea(String) and getSubAdminArea()",
method = "getSubAdminArea",
args = {}
)
})
public void testAccessSubAdminArea() {
Address address = new Address(Locale.CHINA);
String subAdminArea = "Santa Clara County";
address.setSubAdminArea(subAdminArea);
assertEquals(subAdminArea, address.getSubAdminArea());
address.setSubAdminArea(null);
assertNull(address.getSubAdminArea());
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test toString()",
method = "toString",
args = {}
)
public void testToString() {
Address address = new Address(Locale.CHINA);
address.setUrl("www.google.com");
address.setPostalCode("95120");
String expected = "Address[addressLines=[],feature=null,admin=null,sub-admin=null," +
"locality=null,thoroughfare=null,postalCode=95120,countryCode=null," +
"countryName=null,hasLatitude=false,latitude=0.0,hasLongitude=false," +
"longitude=0.0,phone=null,url=www.google.com,extras=null]";
assertEquals(expected, address.toString());
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "setAddressLine",
args = {int.class, java.lang.String.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getMaxAddressLineIndex",
args = {}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getAddressLine",
args = {int.class}
)
})
public void testAddressLine() {
Address address = new Address(Locale.CHINA);
try {
address.setAddressLine(-1, null);
fail("should throw IllegalArgumentException");
} catch (IllegalArgumentException e) {
}
try {
address.getAddressLine(-1);
fail("should throw IllegalArgumentException");
} catch (IllegalArgumentException e) {
}
address.setAddressLine(0, null);
assertNull(address.getAddressLine(0));
assertEquals(0, address.getMaxAddressLineIndex());
final String line1 = "1";
address.setAddressLine(0, line1);
assertEquals(line1, address.getAddressLine(0));
assertEquals(0, address.getMaxAddressLineIndex());
final String line2 = "2";
address.setAddressLine(5, line2);
assertEquals(line2, address.getAddressLine(5));
assertEquals(5, address.getMaxAddressLineIndex());
address.setAddressLine(2, null);
assertNull(address.getAddressLine(2));
assertEquals(5, address.getMaxAddressLineIndex());
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test getLocale()",
method = "getLocale",
args = {}
)
public void testGetLocale() {
Locale locale = Locale.US;
Address address = new Address(locale);
assertSame(locale, address.getLocale());
locale = Locale.UK;
address = new Address(locale);
assertSame(locale, address.getLocale());
address = new Address(null);
assertNull(address.getLocale());
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setLocality(String) and getLocality()",
method = "setLocality",
args = {java.lang.String.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test setLocality(String) and getLocality()",
method = "getLocality",
args = {}
)
})
public void testAccessLocality() {
Address address = new Address(Locale.PRC);
String locality = "Hollywood";
address.setLocality(locality);
assertEquals(locality, address.getLocality());
address.setLocality(null);
assertNull(address.getLocality());
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Test writeToParcel(Parcel, int), this function ignores the parameter 'flag'.",
method = "writeToParcel",
args = {android.os.Parcel.class, int.class}
)
public void testWriteToParcel() {
Locale locale = Locale.KOREA;
Address address = new Address(locale);
Parcel parcel = Parcel.obtain();
address.writeToParcel(parcel, 0);
parcel.setDataPosition(0);
assertEquals(locale.getLanguage(), parcel.readString());
assertEquals(locale.getCountry(), parcel.readString());
assertEquals(0, parcel.readInt());
assertEquals(address.getFeatureName(), parcel.readString());
assertEquals(address.getAdminArea(), parcel.readString());
assertEquals(address.getSubAdminArea(), parcel.readString());
assertEquals(address.getLocality(), parcel.readString());
assertEquals(address.getSubLocality(), parcel.readString());
assertEquals(address.getThoroughfare(), parcel.readString());
assertEquals(address.getSubThoroughfare(), parcel.readString());
assertEquals(address.getPremises(), parcel.readString());
assertEquals(address.getPostalCode(), parcel.readString());
assertEquals(address.getCountryCode(), parcel.readString());
assertEquals(address.getCountryName(), parcel.readString());
assertEquals(0, parcel.readInt());
assertEquals(0, parcel.readInt());
assertEquals(address.getPhone(), parcel.readString());
assertEquals(address.getUrl(), parcel.readString());
assertEquals(address.getExtras(), parcel.readBundle());
}
private class MockParcelable implements Parcelable {
public int describeContents() {
return Parcelable.CONTENTS_FILE_DESCRIPTOR;
}
public void writeToParcel(Parcel dest, int flags) {
}
}
}