summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--expectations/brokentests.txt5
-rw-r--r--luni/src/main/java/java/io/File.java10
-rw-r--r--luni/src/main/java/java/io/FilePermission.java7
-rw-r--r--luni/src/main/java/java/net/HttpCookie.java5
-rw-r--r--luni/src/main/java/java/net/URLStreamHandler.java49
-rw-r--r--luni/src/main/java/java/security/Identity.java4
-rw-r--r--luni/src/main/java/java/text/MessageFormat.java3
-rw-r--r--luni/src/main/java/java/util/HashMap.java17
-rw-r--r--luni/src/main/java/java/util/TimeZone.java2
-rw-r--r--luni/src/main/java/java/util/TreeMap.java5
-rw-r--r--luni/src/main/java/java/util/logging/Level.java6
-rw-r--r--luni/src/main/java/libcore/base/Objects.java28
-rw-r--r--luni/src/main/java/org/apache/harmony/luni/internal/util/ZoneInfo.java79
-rw-r--r--luni/src/main/java/org/apache/harmony/security/asn1/DerOutputStream.java5
-rw-r--r--luni/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSessionImpl.java10
-rw-r--r--luni/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLSessionImpl.java4
-rw-r--r--luni/src/test/java/java/util/OldTimeZoneTest.java235
-rw-r--r--luni/src/test/java/org/apache/harmony/security/tests/java/security/KeyStore2Test.java2
-rw-r--r--luni/src/test/java/org/apache/harmony/security/tests/java/security/Security2Test.java5
-rw-r--r--luni/src/test/java/tests/api/java/util/AllTests.java1
-rw-r--r--luni/src/test/java/tests/api/java/util/TimeZoneTest.java414
-rw-r--r--support/src/test/java/org/apache/harmony/testframework/serialization/SerializationTest.java3
22 files changed, 355 insertions, 544 deletions
diff --git a/expectations/brokentests.txt b/expectations/brokentests.txt
index cb609a7..c6dcfcc 100644
--- a/expectations/brokentests.txt
+++ b/expectations/brokentests.txt
@@ -654,6 +654,11 @@ test tests.api.java.nio.charset.UTFCharsetEncoderTest#testSpecificDefaultValue
result EXEC_FAILED
pattern .*junit.framework.AssertionFailedError: expected:<1.1> but was:<2.0>.*
+# We don't permit runtime switching of the default charset (and neither does the RI)
+test org.apache.harmony.nio_char.tests.java.nio.charset.CharsetTest#test_defaultCharset
+result EXEC_FAILED
+pattern .*expected:<ISO-8859-1> but was:<UTF-8>.*
+
# this test needs external interaction
test com.sun.tools.attach.Application
result UNSUPPORTED
diff --git a/luni/src/main/java/java/io/File.java b/luni/src/main/java/java/io/File.java
index 57f6609..168d2ac 100644
--- a/luni/src/main/java/java/io/File.java
+++ b/luni/src/main/java/java/io/File.java
@@ -36,10 +36,8 @@ import java.security.AccessController;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.List;
-
import org.apache.harmony.luni.util.DeleteOnExit;
import org.apache.harmony.luni.util.PriviAction;
-import org.apache.harmony.luni.util.Util;
/**
* An "abstract" representation of a file system entity identified by a
@@ -260,19 +258,17 @@ public class File implements Serializable, Comparable<File> {
return haveSlash ? (prefix + suffix) : (prefix + separatorChar + suffix);
}
- @SuppressWarnings("nls")
private void checkURI(URI uri) {
if (!uri.isAbsolute()) {
throw new IllegalArgumentException("URI is not absolute: " + uri);
} else if (!uri.getRawSchemeSpecificPart().startsWith("/")) {
throw new IllegalArgumentException("URI is not hierarchical: " + uri);
}
- String temp = uri.getScheme();
- if (temp == null || !temp.equals("file")) {
+ if (!"file".equals(uri.getScheme())) {
throw new IllegalArgumentException("Expected file scheme in URI: " + uri);
}
- temp = uri.getRawPath();
- if (temp == null || temp.isEmpty()) {
+ String rawPath = uri.getRawPath();
+ if (rawPath == null || rawPath.isEmpty()) {
throw new IllegalArgumentException("Expected non-empty path in URI: " + uri);
}
if (uri.getRawAuthority() != null) {
diff --git a/luni/src/main/java/java/io/FilePermission.java b/luni/src/main/java/java/io/FilePermission.java
index 6d6e0dc..8216086 100644
--- a/luni/src/main/java/java/io/FilePermission.java
+++ b/luni/src/main/java/java/io/FilePermission.java
@@ -21,6 +21,7 @@ import java.security.AccessController;
import java.security.Permission;
import java.security.PermissionCollection;
import java.security.PrivilegedAction;
+import libcore.base.Objects;
/**
* A permission for accessing a file or directory. The FilePermission is made up
@@ -210,10 +211,8 @@ public final class FilePermission extends Permission implements Serializable {
public boolean equals(Object obj) {
if (obj instanceof FilePermission) {
FilePermission fp = (FilePermission) obj;
- if (fp.actions != actions) {
- if (fp.actions == null || !fp.actions.equals(actions)) {
- return false;
- }
+ if (!Objects.equal(fp.actions, actions)) {
+ return false;
}
/* Matching actions and both are <<ALL FILES>> ? */
diff --git a/luni/src/main/java/java/net/HttpCookie.java b/luni/src/main/java/java/net/HttpCookie.java
index dfd7fe1..fcdaf75 100644
--- a/luni/src/main/java/java/net/HttpCookie.java
+++ b/luni/src/main/java/java/net/HttpCookie.java
@@ -26,6 +26,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
+import libcore.base.Objects;
/**
* An opaque key-value value pair held by an HTTP client to permit a stateful
@@ -725,7 +726,7 @@ public final class HttpCookie implements Cloneable {
HttpCookie that = (HttpCookie) object;
return name.equalsIgnoreCase(that.getName())
&& (domain != null ? domain.equalsIgnoreCase(that.domain) : that.domain == null)
- && (path != null ? path.equals(that.path) : that.path == null);
+ && Objects.equal(path, that.path);
}
return false;
}
@@ -773,4 +774,4 @@ public final class HttpCookie implements Cloneable {
builder.append("\"");
}
}
-} \ No newline at end of file
+}
diff --git a/luni/src/main/java/java/net/URLStreamHandler.java b/luni/src/main/java/java/net/URLStreamHandler.java
index 3fbed56..d95b2a5 100644
--- a/luni/src/main/java/java/net/URLStreamHandler.java
+++ b/luni/src/main/java/java/net/URLStreamHandler.java
@@ -18,6 +18,7 @@
package java.net;
import java.io.IOException;
+import libcore.base.Objects;
import org.apache.harmony.luni.util.URLUtil;
/**
@@ -339,13 +340,8 @@ public abstract class URLStreamHandler {
if (!sameFile(url1, url2)) {
return false;
}
- String s1 = url1.getRef(), s2 = url2.getRef();
- if (s1 != s2 && (s1 == null || !s1.equals(s2))) {
- return false;
- }
- s1 = url1.getQuery();
- s2 = url2.getQuery();
- return s1 == s2 || (s1 != null && s1.equals(s2));
+ return Objects.equal(url1.getRef(), url2.getRef())
+ && Objects.equal(url1.getQuery(), url2.getQuery());
}
/**
@@ -400,16 +396,8 @@ public abstract class URLStreamHandler {
*/
protected boolean hostsEqual(URL url1, URL url2) {
String host1 = getHost(url1), host2 = getHost(url2);
- if (host1 != null && host1.equalsIgnoreCase(host2)) {
- return true;
- }
- // Compare host address if the host name is not equal.
- InetAddress address1 = getHostAddress(url1);
- InetAddress address2 = getHostAddress(url2);
- if (address1 != null && address1.equals(address2)) {
- return true;
- }
- return false;
+ return (host1 != null && host1.equalsIgnoreCase(host2))
+ || Objects.equal(getHostAddress(url1), getHostAddress(url2));
}
/**
@@ -424,29 +412,10 @@ public abstract class URLStreamHandler {
* otherwise.
*/
protected boolean sameFile(URL url1, URL url2) {
- String s1 = url1.getProtocol();
- String s2 = url2.getProtocol();
- if (s1 != s2 && (s1 == null || !s1.equals(s2))) {
- return false;
- }
-
- s1 = url1.getFile();
- s2 = url2.getFile();
- if (s1 != s2 && (s1 == null || !s1.equals(s2))) {
- return false;
- }
- if (!hostsEqual(url1, url2)) {
- return false;
- }
- int p1 = url1.getPort();
- if (p1 == -1) {
- p1 = getDefaultPort();
- }
- int p2 = url2.getPort();
- if (p2 == -1) {
- p2 = getDefaultPort();
- }
- return p1 == p2;
+ return Objects.equal(url1.getProtocol(), url2.getProtocol())
+ && Objects.equal(url1.getFile(), url2.getFile())
+ && hostsEqual(url1, url2)
+ && url1.getEffectivePort() == url2.getEffectivePort();
}
/*
diff --git a/luni/src/main/java/java/security/Identity.java b/luni/src/main/java/java/security/Identity.java
index b8696a6..b358390 100644
--- a/luni/src/main/java/java/security/Identity.java
+++ b/luni/src/main/java/java/security/Identity.java
@@ -20,6 +20,7 @@ package java.security;
import java.io.Serializable;
import java.util.Vector;
import java.util.Arrays;
+import libcore.base.Objects;
/**
* {@code Identity} represents an identity like a person or a company.
@@ -356,8 +357,7 @@ public abstract class Identity implements Principal, Serializable {
return false;
}
Identity i = (Identity) obj;
- if ((name == i.name || (name != null && name.equals(i.name)))
- && (scope == i.scope || (scope != null && scope.equals(i.scope)))) {
+ if (Objects.equal(name, i.name) && (Objects.equal(scope, i.scope))) {
return true;
}
return identityEquals(i);
diff --git a/luni/src/main/java/java/text/MessageFormat.java b/luni/src/main/java/java/text/MessageFormat.java
index e45c386..824ddb8 100644
--- a/luni/src/main/java/java/text/MessageFormat.java
+++ b/luni/src/main/java/java/text/MessageFormat.java
@@ -27,6 +27,7 @@ import java.util.Date;
import java.util.Iterator;
import java.util.Locale;
import java.util.Vector;
+import libcore.base.Objects;
/**
* Produces concatenated messages in language-neutral way. New code
@@ -1333,7 +1334,7 @@ public class MessageFormat extends Format {
@Override
protected Object readResolve() throws InvalidObjectException {
String name = this.getName();
- if (name != null && name.equals(ARGUMENT.getName())) {
+ if (Objects.equal(name, ARGUMENT.getName())) {
return ARGUMENT;
}
throw new InvalidObjectException("Not a valid MessageFormat.Field, subclass should override readResolve()");
diff --git a/luni/src/main/java/java/util/HashMap.java b/luni/src/main/java/java/util/HashMap.java
index ecad473..1e5bd0e 100644
--- a/luni/src/main/java/java/util/HashMap.java
+++ b/luni/src/main/java/java/util/HashMap.java
@@ -27,6 +27,7 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamField;
import java.io.Serializable;
+import libcore.base.Objects;
/**
* HashMap is an implementation of {@link Map}. All optional operations are supported.
@@ -755,8 +756,8 @@ public class HashMap<K, V> extends AbstractMap<K, V> implements Cloneable, Seria
return false;
}
Entry<?, ?> e = (Entry<?, ?>) o;
- return HashMap.equals(e.getKey(), key)
- && HashMap.equals(e.getValue(), value);
+ return Objects.equal(e.getKey(), key)
+ && Objects.equal(e.getValue(), value);
}
@Override public final int hashCode() {
@@ -838,7 +839,7 @@ public class HashMap<K, V> extends AbstractMap<K, V> implements Cloneable, Seria
private boolean containsMapping(Object key, Object value) {
if (key == null) {
HashMapEntry<K, V> e = entryForNullKey;
- return e != null && equals(value, e.value);
+ return e != null && Objects.equal(value, e.value);
}
int hash = secondaryHash(key.hashCode());
@@ -846,7 +847,7 @@ public class HashMap<K, V> extends AbstractMap<K, V> implements Cloneable, Seria
int index = hash & (tab.length - 1);
for (HashMapEntry<K, V> e = tab[index]; e != null; e = e.next) {
if (e.hash == hash && key.equals(e.key)) {
- return equals(value, e.value);
+ return Objects.equal(value, e.value);
}
}
return false; // No entry for key
@@ -859,7 +860,7 @@ public class HashMap<K, V> extends AbstractMap<K, V> implements Cloneable, Seria
private boolean removeMapping(Object key, Object value) {
if (key == null) {
HashMapEntry<K, V> e = entryForNullKey;
- if (e == null || !equals(value, e.value)) {
+ if (e == null || !Objects.equal(value, e.value)) {
return false;
}
entryForNullKey = null;
@@ -875,7 +876,7 @@ public class HashMap<K, V> extends AbstractMap<K, V> implements Cloneable, Seria
for (HashMapEntry<K, V> e = tab[index], prev = null;
e != null; prev = e, e = e.next) {
if (e.hash == hash && key.equals(e.key)) {
- if (!equals(value, e.value)) {
+ if (!Objects.equal(value, e.value)) {
return false; // Map has wrong value for key
}
if (prev == null) {
@@ -892,10 +893,6 @@ public class HashMap<K, V> extends AbstractMap<K, V> implements Cloneable, Seria
return false; // No entry for key
}
- private static boolean equals(Object o1, Object o2) {
- return o1 == o2 || (o1 != null && o1.equals(o2));
- }
-
// Subclass (LinkedHashMap) overrides these for correct iteration order
Iterator<K> newKeyIterator() { return new KeyIterator(); }
Iterator<V> newValueIterator() { return new ValueIterator(); }
diff --git a/luni/src/main/java/java/util/TimeZone.java b/luni/src/main/java/java/util/TimeZone.java
index 0b6252d..540681e 100644
--- a/luni/src/main/java/java/util/TimeZone.java
+++ b/luni/src/main/java/java/util/TimeZone.java
@@ -277,7 +277,7 @@ public abstract class TimeZone implements Serializable, Cloneable {
* Returns a time zone whose ID is {@code id}. Time zone IDs are typically
* named by geographic identifiers like {@code America/Los_Angeles} or GMT
* offsets like {@code GMT-8:00}. Three letter IDs like {@code PST} are
- * supported but should not be used because they is often ambiguous.
+ * supported but should not be used because they are often ambiguous.
*
* @return a time zone with the specified ID, or {@code GMT} if the ID
* is not recognized and cannot be parsed.
diff --git a/luni/src/main/java/java/util/TreeMap.java b/luni/src/main/java/java/util/TreeMap.java
index 5c0f8f4..a11ab1a 100644
--- a/luni/src/main/java/java/util/TreeMap.java
+++ b/luni/src/main/java/java/util/TreeMap.java
@@ -30,6 +30,7 @@ import static java.util.TreeMap.Relation.EQUAL;
import static java.util.TreeMap.Relation.FLOOR;
import static java.util.TreeMap.Relation.HIGHER;
import static java.util.TreeMap.Relation.LOWER;
+import libcore.base.Objects;
/**
* A map whose entries are sorted by their keys. All optional operations such as
@@ -367,9 +368,7 @@ public class TreeMap<K, V> extends AbstractMap<K, V>
*/
Node<K, V> findByEntry(Entry<?, ?> entry) {
Node<K, V> mine = findByObject(entry.getKey());
- boolean valuesEqual = mine != null && (mine.value != null
- ? mine.value.equals(entry.getValue())
- : entry.getValue() == null);
+ boolean valuesEqual = mine != null && Objects.equal(mine.value, entry.getValue());
return valuesEqual ? mine : null;
}
diff --git a/luni/src/main/java/java/util/logging/Level.java b/luni/src/main/java/java/util/logging/Level.java
index b84bbbd..ee65166 100644
--- a/luni/src/main/java/java/util/logging/Level.java
+++ b/luni/src/main/java/java/util/logging/Level.java
@@ -26,6 +26,7 @@ import java.util.List;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
+import libcore.base.Objects;
/**
* {@code Level} objects are used to indicate the level of logging. There are a
@@ -262,10 +263,7 @@ public class Level implements Serializable {
if (!name.equals(level.name)) {
continue;
}
- if (resourceBundleName == level.resourceBundleName) {
- return level;
- } else if (resourceBundleName != null
- && resourceBundleName.equals(level.resourceBundleName)) {
+ if (Objects.equal(resourceBundleName, level.resourceBundleName)) {
return level;
}
}
diff --git a/luni/src/main/java/libcore/base/Objects.java b/luni/src/main/java/libcore/base/Objects.java
new file mode 100644
index 0000000..4c420b8
--- /dev/null
+++ b/luni/src/main/java/libcore/base/Objects.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2010 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 libcore.base;
+
+public final class Objects {
+ private Objects() {}
+
+ /**
+ * Returns true if two possibly-null objects are equal.
+ */
+ public static boolean equal(Object a, Object b) {
+ return a == b || (a != null && a.equals(b));
+ }
+}
diff --git a/luni/src/main/java/org/apache/harmony/luni/internal/util/ZoneInfo.java b/luni/src/main/java/org/apache/harmony/luni/internal/util/ZoneInfo.java
index db1d136..0e95aba 100644
--- a/luni/src/main/java/org/apache/harmony/luni/internal/util/ZoneInfo.java
+++ b/luni/src/main/java/org/apache/harmony/luni/internal/util/ZoneInfo.java
@@ -20,11 +20,9 @@ import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.TimeZone;
+import libcore.base.Objects;
-/**
- * {@hide}
- */
-public class ZoneInfo extends TimeZone {
+public final class ZoneInfo extends TimeZone {
private static final long MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1000;
private static final long MILLISECONDS_PER_400_YEARS =
@@ -41,8 +39,7 @@ public class ZoneInfo extends TimeZone {
};
public static TimeZone getTimeZone(String name) {
- if (name == null)
- {
+ if (name == null) {
return null;
}
@@ -54,17 +51,28 @@ public class ZoneInfo extends TimeZone {
}
private static String nullName(byte[] data, int where, int off) {
- if (off < 0)
+ if (off < 0) {
return null;
+ }
int end = where + off;
- while (end < data.length && data[end] != '\0')
+ while (end < data.length && data[end] != '\0') {
end++;
+ }
return new String(data, where + off, end - (where + off));
}
- /*package*/ ZoneInfo(String name, int[] transitions, byte[] type,
+ private int mRawOffset;
+ private int[] mTransitions;
+ private int[] mGmtOffs;
+ private byte[] mTypes;
+ private byte[] mIsDsts;
+ private boolean mUseDst;
+ private String mDaylightName;
+ private String mStandardName;
+
+ ZoneInfo(String name, int[] transitions, byte[] type,
int[] gmtoff, byte[] isdst, byte[] abbrev,
byte[] data, int abbrevoff) {
mTransitions = transitions;
@@ -136,10 +144,7 @@ public class ZoneInfo extends TimeZone {
}
@Override
- public int getOffset(@SuppressWarnings("unused") int era,
- int year, int month, int day,
- @SuppressWarnings("unused") int dayOfWeek,
- int millis) {
+ public int getOffset(int era, int year, int month, int day, int dayOfWeek, int millis) {
// XXX This assumes Gregorian always; Calendar switches from
// Julian to Gregorian in 1582. What calendar system are the
// arguments supposed to come from?
@@ -211,30 +216,18 @@ public class ZoneInfo extends TimeZone {
return mUseDst;
}
- private int mRawOffset;
- private int[] mTransitions;
- private int[] mGmtOffs;
- private byte[] mTypes;
- private byte[] mIsDsts;
- private boolean mUseDst;
- private String mDaylightName;
- private String mStandardName;
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
+ @Override public boolean hasSameRules(TimeZone timeZone) {
+ if (!(timeZone instanceof ZoneInfo)) {
+ return false;
}
- if (!(obj instanceof ZoneInfo)) {
- return false;
+ ZoneInfo other = (ZoneInfo) timeZone;
+ if (mUseDst != other.mUseDst) {
+ return false;
}
- ZoneInfo other = (ZoneInfo) obj;
- return mUseDst == other.mUseDst
- && (mDaylightName == null ? other.mDaylightName == null :
- mDaylightName.equals(other.mDaylightName))
- && (mStandardName == null ? other.mStandardName == null :
- mStandardName.equals(other.mStandardName))
- && mRawOffset == other.mRawOffset
+ if (!mUseDst) {
+ return mRawOffset == other.mRawOffset;
+ }
+ return mRawOffset == other.mRawOffset
// Arrays.equals returns true if both arrays are null
&& Arrays.equals(mGmtOffs, other.mGmtOffs)
&& Arrays.equals(mIsDsts, other.mIsDsts)
@@ -242,17 +235,25 @@ public class ZoneInfo extends TimeZone {
&& Arrays.equals(mTransitions, other.mTransitions);
}
+ @Override public boolean equals(Object obj) {
+ if (!(obj instanceof ZoneInfo)) {
+ return false;
+ }
+ ZoneInfo other = (ZoneInfo) obj;
+ return Objects.equal(mDaylightName, other.mDaylightName)
+ && Objects.equal(mStandardName, other.mStandardName)
+ && hasSameRules(other);
+ }
+
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
- result = prime * result + ((mDaylightName == null) ? 0 :
- mDaylightName.hashCode());
+ result = prime * result + ((mDaylightName == null) ? 0 : mDaylightName.hashCode());
result = prime * result + Arrays.hashCode(mGmtOffs);
result = prime * result + Arrays.hashCode(mIsDsts);
result = prime * result + mRawOffset;
- result = prime * result + ((mStandardName == null) ? 0 :
- mStandardName.hashCode());
+ result = prime * result + ((mStandardName == null) ? 0 : mStandardName.hashCode());
result = prime * result + Arrays.hashCode(mTransitions);
result = prime * result + Arrays.hashCode(mTypes);
result = prime * result + (mUseDst ? 1231 : 1237);
diff --git a/luni/src/main/java/org/apache/harmony/security/asn1/DerOutputStream.java b/luni/src/main/java/org/apache/harmony/security/asn1/DerOutputStream.java
index e0e8a7d..b8b9d1c 100644
--- a/luni/src/main/java/org/apache/harmony/security/asn1/DerOutputStream.java
+++ b/luni/src/main/java/org/apache/harmony/security/asn1/DerOutputStream.java
@@ -22,6 +22,8 @@
package org.apache.harmony.security.asn1;
+import libcore.base.Objects;
+
/**
* Encodes ASN.1 types with DER (X.690)
@@ -200,8 +202,7 @@ public final class DerOutputStream extends BerOutputStream {
}
}
- if (sequence.DEFAULT[i] != null
- && sequence.DEFAULT[i].equals(values[i])) {
+ if (Objects.equal(sequence.DEFAULT[i], values[i])) {
values[i] = null;
continue;
}
diff --git a/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSessionImpl.java b/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSessionImpl.java
index 14ccea2..8e6e59d 100644
--- a/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSessionImpl.java
+++ b/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSessionImpl.java
@@ -22,8 +22,6 @@ import java.security.AccessController;
import java.security.Principal;
import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
-import java.util.Iterator;
-import java.util.Map;
import java.util.Vector;
import javax.net.ssl.SSLPeerUnverifiedException;
import javax.net.ssl.SSLPermission;
@@ -32,6 +30,7 @@ import javax.net.ssl.SSLSessionBindingEvent;
import javax.net.ssl.SSLSessionBindingListener;
import javax.net.ssl.SSLSessionContext;
import javax.security.cert.CertificateEncodingException;
+import libcore.base.Objects;
import org.apache.harmony.luni.util.TwoKeyHashMap;
import org.apache.harmony.security.provider.cert.X509CertImpl;
@@ -417,11 +416,10 @@ public class OpenSSLSessionImpl implements SSLSession {
Vector v = new Vector();
AccessControlContext current = AccessController.getContext();
AccessControlContext cont;
- for (Iterator it = values.entrySet().iterator(); it.hasNext();) {
- TwoKeyHashMap.Entry entry = (TwoKeyHashMap.Entry) it.next();
+ for (Object o : values.entrySet()) {
+ TwoKeyHashMap.Entry entry = (TwoKeyHashMap.Entry) o;
cont = (AccessControlContext) entry.getKey2();
- if ((current == null && cont == null)
- || (current != null && current.equals(cont))) {
+ if (Objects.equal(current, cont == null)) {
v.add(entry.getKey1());
}
}
diff --git a/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLSessionImpl.java b/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLSessionImpl.java
index 5fec6dd..a75064b 100644
--- a/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLSessionImpl.java
+++ b/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLSessionImpl.java
@@ -34,6 +34,7 @@ import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSessionBindingEvent;
import javax.net.ssl.SSLSessionBindingListener;
import javax.net.ssl.SSLSessionContext;
+import libcore.base.Objects;
/**
*
@@ -298,8 +299,7 @@ public class SSLSessionImpl implements SSLSession, Cloneable {
final Vector<String> v = new Vector<String>();
final AccessControlContext currAcc = AccessController.getContext();
for (ValueKey key : values.keySet()) {
- if ((currAcc == null && key.acc == null)
- || (currAcc != null && currAcc.equals(key.acc))) {
+ if (Objects.equal(currAcc, key.acc)) {
v.add(key.name);
}
}
diff --git a/luni/src/test/java/java/util/OldTimeZoneTest.java b/luni/src/test/java/java/util/OldTimeZoneTest.java
new file mode 100644
index 0000000..126e787
--- /dev/null
+++ b/luni/src/test/java/java/util/OldTimeZoneTest.java
@@ -0,0 +1,235 @@
+/*
+ * 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 java.util;
+
+import dalvik.annotation.AndroidOnly;
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import junit.framework.TestCase;
+import tests.support.Support_Locale;
+
+@TestTargetClass(TimeZone.class)
+public class OldTimeZoneTest extends TestCase {
+
+ class Mock_TimeZone extends TimeZone {
+ @Override
+ public int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) {
+ return 0;
+ }
+
+ @Override
+ public int getRawOffset() {
+ return 0;
+ }
+
+ @Override
+ public boolean inDaylightTime(Date date) {
+ return false;
+ }
+
+ @Override
+ public void setRawOffset(int offsetMillis) {
+
+ }
+
+ @Override
+ public boolean useDaylightTime() {
+ return false;
+ }
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ notes = "",
+ method = "TimeZone",
+ args = {}
+ )
+ public void test_constructor() {
+ assertNotNull(new Mock_TimeZone());
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ notes = "",
+ method = "clone",
+ args = {}
+ )
+ public void test_clone() {
+ TimeZone tz1 = TimeZone.getDefault();
+ TimeZone tz2 = (TimeZone)tz1.clone();
+
+ assertTrue(tz1.equals(tz2));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ notes = "",
+ method = "getAvailableIDs",
+ args = {}
+ )
+ public void test_getAvailableIDs() {
+ String[] str = TimeZone.getAvailableIDs();
+ assertNotNull(str);
+ assertTrue(str.length != 0);
+ for(int i = 0; i < str.length; i++) {
+ assertNotNull(TimeZone.getTimeZone(str[i]));
+ }
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ notes = "",
+ method = "getAvailableIDs",
+ args = {int.class}
+ )
+ public void test_getAvailableIDsI() {
+ String[] str = TimeZone.getAvailableIDs(0);
+ assertNotNull(str);
+ assertTrue(str.length != 0);
+ for(int i = 0; i < str.length; i++) {
+ assertNotNull(TimeZone.getTimeZone(str[i]));
+ }
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ notes = "",
+ method = "getDisplayName",
+ args = {}
+ )
+ public void test_getDisplayName() {
+ TimeZone tz = TimeZone.getTimeZone("GMT-6");
+ assertEquals("GMT-06:00", tz.getDisplayName());
+ tz = TimeZone.getTimeZone("America/Los_Angeles");
+ assertEquals("Pacific Standard Time", tz.getDisplayName());
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ notes = "",
+ method = "getDisplayName",
+ args = {java.util.Locale.class}
+ )
+ public void test_getDisplayNameLjava_util_Locale() {
+ Locale[] requiredLocales = {Locale.US, Locale.FRANCE};
+ if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+ // locale dependent test, bug 1943269
+ return;
+ }
+ TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+ assertEquals("Pacific Standard Time", tz.getDisplayName(new Locale("US")));
+ // BEGIN android-note: RI has "Heure", CLDR/ICU has "heure".
+ assertEquals("heure normale du Pacifique", tz.getDisplayName(Locale.FRANCE));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ notes = "",
+ method = "getDisplayName",
+ args = {boolean.class, int.class}
+ )
+ public void test_getDisplayNameZI() {
+ TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+ assertEquals("PST", tz.getDisplayName(false, 0));
+ assertEquals("Pacific Daylight Time", tz.getDisplayName(true, 1));
+ assertEquals("Pacific Standard Time", tz.getDisplayName(false, 1));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ notes = "",
+ method = "getDisplayName",
+ args = {boolean.class, int.class, java.util.Locale.class}
+ )
+ @AndroidOnly("fail on RI. See comment below")
+ public void test_getDisplayNameZILjava_util_Locale() {
+ Locale[] requiredLocales = {Locale.US, Locale.UK, Locale.FRANCE};
+ if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+ // locale dependent test, bug 1943269
+ return;
+ }
+ TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+ assertEquals("PST", tz.getDisplayName(false, 0, Locale.US));
+ assertEquals("Pacific Daylight Time", tz.getDisplayName(true, 1, Locale.US));
+ assertEquals("Pacific Standard Time", tz.getDisplayName(false, 1, Locale.UK));
+ //RI fails on following line. RI always returns short time zone name as "PST"
+ assertEquals("UTC-08:00", tz.getDisplayName(false, 0, Locale.FRANCE));
+ // BEGIN android-note: RI has "Heure", CLDR/ICU has "heure".
+ assertEquals("heure avanc\u00e9e du Pacifique", tz.getDisplayName(true, 1, Locale.FRANCE));
+ assertEquals("heure normale du Pacifique", tz.getDisplayName(false, 1, Locale.FRANCE));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ notes = "",
+ method = "getID",
+ args = {}
+ )
+ public void test_getID() {
+ TimeZone tz = TimeZone.getTimeZone("GMT-6");
+ assertEquals("GMT-06:00", tz.getID());
+ tz = TimeZone.getTimeZone("America/Denver");
+ assertEquals("America/Denver", tz.getID());
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ notes = "",
+ method = "hasSameRules",
+ args = {java.util.TimeZone.class}
+ )
+ public void test_hasSameRulesLjava_util_TimeZone() {
+ TimeZone tz1 = TimeZone.getTimeZone("America/Denver");
+ TimeZone tz2 = TimeZone.getTimeZone("America/Phoenix");
+ assertEquals(tz1.getDisplayName(false, 0), tz2.getDisplayName(false, 0));
+ // Arizona doesn't observe DST. See http://phoenix.about.com/cs/weather/qt/timezone.htm
+ assertFalse(tz1.hasSameRules(tz2));
+ assertFalse(tz1.hasSameRules(null));
+ tz1 = TimeZone.getTimeZone("America/Montreal");
+ tz2 = TimeZone.getTimeZone("America/New_York");
+ assertEquals(tz1.getDisplayName(), tz2.getDisplayName());
+ assertFalse(tz1.getID().equals(tz2.getID()));
+ assertTrue(tz2.hasSameRules(tz1));
+ assertTrue(tz1.hasSameRules(tz1));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ notes = "",
+ method = "setID",
+ args = {java.lang.String.class}
+ )
+ public void test_setIDLjava_lang_String() {
+ TimeZone tz = TimeZone.getTimeZone("GMT-6");
+ assertEquals("GMT-06:00", tz.getID());
+ tz.setID("New ID for GMT-6");
+ assertEquals("New ID for GMT-6", tz.getID());
+ }
+
+ Locale loc = null;
+
+ protected void setUp() {
+ loc = Locale.getDefault();
+ Locale.setDefault(Locale.US);
+ }
+
+ protected void tearDown() {
+ Locale.setDefault(loc);
+ }
+}
diff --git a/luni/src/test/java/org/apache/harmony/security/tests/java/security/KeyStore2Test.java b/luni/src/test/java/org/apache/harmony/security/tests/java/security/KeyStore2Test.java
index 0a2dbb5..1ed3a11 100644
--- a/luni/src/test/java/org/apache/harmony/security/tests/java/security/KeyStore2Test.java
+++ b/luni/src/test/java/org/apache/harmony/security/tests/java/security/KeyStore2Test.java
@@ -310,7 +310,7 @@ public class KeyStore2Test extends junit.framework.TestCase {
// testing for a certificate chain
java.security.cert.Certificate cert2 = keyTest.getCertificate("alias2");
assertTrue("the certificate for alias2 is supposed to exist",
- cert2 != null && cert2.equals(cert[0]));
+ cert2.equals(cert[0]));
}
diff --git a/luni/src/test/java/org/apache/harmony/security/tests/java/security/Security2Test.java b/luni/src/test/java/org/apache/harmony/security/tests/java/security/Security2Test.java
index 13f83c1..75eeceb 100644
--- a/luni/src/test/java/org/apache/harmony/security/tests/java/security/Security2Test.java
+++ b/luni/src/test/java/org/apache/harmony/security/tests/java/security/Security2Test.java
@@ -17,11 +17,9 @@
package org.apache.harmony.security.tests.java.security;
+import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.TestTargetNew;
-import dalvik.annotation.TestTargets;
-import dalvik.annotation.TestLevel;
-
import java.security.InvalidParameterException;
import java.security.Provider;
import java.security.Security;
@@ -29,7 +27,6 @@ import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
-
import tests.support.Support_ProviderTrust;
import tests.support.Support_TestProvider;
diff --git a/luni/src/test/java/tests/api/java/util/AllTests.java b/luni/src/test/java/tests/api/java/util/AllTests.java
index 8a5e6b0..328bc8f 100644
--- a/luni/src/test/java/tests/api/java/util/AllTests.java
+++ b/luni/src/test/java/tests/api/java/util/AllTests.java
@@ -71,7 +71,6 @@ public class AllTests {
suite.addTestSuite(StringTokenizerTest.class);
suite.addTestSuite(TimerTaskTest.class);
suite.addTestSuite(TimerTest.class);
- suite.addTestSuite(TimeZoneTest.class);
suite.addTestSuite(TooManyListenersExceptionTest.class);
suite.addTestSuite(VectorTest.class);
suite.addTestSuite(WeakHashMapTest.class);
diff --git a/luni/src/test/java/tests/api/java/util/TimeZoneTest.java b/luni/src/test/java/tests/api/java/util/TimeZoneTest.java
deleted file mode 100644
index 035f8d1..0000000
--- a/luni/src/test/java/tests/api/java/util/TimeZoneTest.java
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
- * 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 tests.api.java.util;
-
-import dalvik.annotation.BrokenTest;
-import dalvik.annotation.TestTargetNew;
-import dalvik.annotation.TestTargets;
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetClass;
-import dalvik.annotation.KnownFailure;
-import dalvik.annotation.AndroidOnly;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.Locale;
-import java.util.SimpleTimeZone;
-import java.util.TimeZone;
-
-import tests.support.Support_Locale;
-import tests.support.Support_TimeZone;
-
-@TestTargetClass(TimeZone.class)
-public class TimeZoneTest extends junit.framework.TestCase {
-
- private static final int ONE_HOUR = 3600000;
-
- /**
- * @tests java.util.TimeZone#getDefault()
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "getDefault",
- args = {}
- )
- public void test_getDefault() {
- assertNotSame("returns identical",
- TimeZone.getDefault(), TimeZone.getDefault());
- }
-
- /**
- * @tests java.util.TimeZone#getDSTSavings()
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "getDSTSavings",
- args = {}
- )
- public void test_getDSTSavings() {
- // Test for method int java.util.TimeZone.getDSTSavings()
-
- // test on subclass SimpleTimeZone
- TimeZone st1 = TimeZone.getTimeZone("America/New_York");
- assertEquals("T1A. Incorrect daylight savings returned",
- ONE_HOUR, st1.getDSTSavings());
-
- // a SimpleTimeZone with daylight savings different then 1 hour
- st1 = TimeZone.getTimeZone("Australia/Lord_Howe");
- assertEquals("T1B. Incorrect daylight savings returned",
- 1800000, st1.getDSTSavings());
-
- // test on subclass Support_TimeZone, an instance with daylight savings
- TimeZone tz1 = new Support_TimeZone(-5 * ONE_HOUR, true);
- assertEquals("T2. Incorrect daylight savings returned",
- ONE_HOUR, tz1.getDSTSavings());
-
- // an instance without daylight savings
- tz1 = new Support_TimeZone(3 * ONE_HOUR, false);
- assertEquals("T3. Incorrect daylight savings returned, ",
- 0, tz1.getDSTSavings());
- }
-
- /**
- * @tests java.util.TimeZone#getOffset(long)
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "getOffset",
- args = {long.class}
- )
- public void test_getOffset_long() {
- // Test for method int java.util.TimeZone.getOffset(long time)
-
- // test on subclass SimpleTimeZone
- TimeZone st1 = TimeZone.getTimeZone("EST");
- long time1 = new GregorianCalendar(1998, Calendar.NOVEMBER, 11)
- .getTimeInMillis();
- assertEquals("T1. Incorrect offset returned",
- -(5 * ONE_HOUR), st1.getOffset(time1));
-
- long time2 = new GregorianCalendar(1998, Calendar.JUNE, 11)
- .getTimeInMillis();
-// Not working as expected on RI.
-// st1 = TimeZone.getTimeZone("EST");
-// assertEquals("T2. Incorrect offset returned",
-// -(4 * ONE_HOUR), st1.getOffset(time2));
-
- // test on subclass Support_TimeZone, an instance with daylight savings
- TimeZone tz1 = new Support_TimeZone(-5 * ONE_HOUR, true);
- assertEquals("T3. Incorrect offset returned, ",
- -(5 * ONE_HOUR), tz1.getOffset(time1));
- assertEquals("T4. Incorrect offset returned, ",
- -(4 * ONE_HOUR), tz1.getOffset(time2));
-
- // an instance without daylight savings
- tz1 = new Support_TimeZone(3 * ONE_HOUR, false);
- assertEquals("T5. Incorrect offset returned, ",
- (3 * ONE_HOUR), tz1.getOffset(time1));
- assertEquals("T6. Incorrect offset returned, ",
- (3 * ONE_HOUR), tz1.getOffset(time2));
- }
-
- /**
- * @tests java.util.TimeZone#getTimeZone(java.lang.String)
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "getTimeZone",
- args = {java.lang.String.class}
- )
- public void test_getTimeZoneLjava_lang_String() {
- assertEquals("Must return GMT when given an invalid TimeZone id SMT-8.",
- "GMT", TimeZone.getTimeZone("SMT-8").getID());
- assertEquals("Must return GMT when given an invalid TimeZone time GMT+28:70.",
- "GMT", TimeZone.getTimeZone("GMT+28:70").getID());
- assertEquals("Must return GMT when given an invalid TimeZone time GMT+28:30.",
- "GMT", TimeZone.getTimeZone("GMT+28:30").getID());
- assertEquals("Must return GMT when given an invalid TimeZone time GMT+8:70.",
- "GMT", TimeZone.getTimeZone("GMT+8:70").getID());
- assertEquals("Must return GMT when given an invalid TimeZone time GMT+3:.",
- "GMT", TimeZone.getTimeZone("GMT+3:").getID());
- assertEquals("Must return GMT when given an invalid TimeZone time GMT+3:0.",
- "GMT", TimeZone.getTimeZone("GMT+3:0").getID());
- assertEquals("Must return GMT when given an invalid TimeZone time GMT+2360.",
- "GMT", TimeZone.getTimeZone("GMT+2360").getID());
- assertEquals("Must return GMT when given an invalid TimeZone time GMT+892.",
- "GMT", TimeZone.getTimeZone("GMT+892").getID());
- assertEquals("Must return GMT when given an invalid TimeZone time GMT+082.",
- "GMT", TimeZone.getTimeZone("GMT+082").getID());
- assertEquals("Must return GMT when given an invalid TimeZone time GMT+28.",
- "GMT", TimeZone.getTimeZone("GMT+28").getID());
- assertEquals("Must return GMT when given an invalid TimeZone time GMT+30.",
- "GMT", TimeZone.getTimeZone("GMT+30").getID());
- assertEquals("Must return GMT when given TimeZone GMT.",
- "GMT", TimeZone.getTimeZone("GMT").getID());
- assertEquals("Must return GMT when given TimeZone GMT+.",
- "GMT", TimeZone.getTimeZone("GMT+").getID());
- assertEquals("Must return GMT when given TimeZone GMT-.",
- "GMT", TimeZone.getTimeZone("GMT-").getID());
- assertEquals("Must return GMT when given an invalid TimeZone time GMT-8.45.",
- "GMT", TimeZone.getTimeZone("GMT-8.45").getID());
- assertEquals("Must return GMT when given an invalid TimeZone time GMT-123:23.",
- "GMT", TimeZone.getTimeZone("GMT-123:23").getID());
- assertEquals("Must return proper GMT formatted string for GMT+8:30 (eg. GMT+08:20).",
- "GMT+08:30", TimeZone.getTimeZone("GMT+8:30").getID());
- assertEquals("Must return proper GMT formatted string for GMT+3 (eg. GMT+08:20).",
- "GMT+03:00", TimeZone.getTimeZone("GMT+3").getID());
- assertEquals("Must return proper GMT formatted string for GMT+3:02 (eg. GMT+08:20).",
- "GMT+03:02", TimeZone.getTimeZone("GMT+3:02").getID());
- assertEquals("Must return proper GMT formatted string for GMT+2359 (eg. GMT+08:20).",
- "GMT+23:59", TimeZone.getTimeZone("GMT+2359").getID());
- assertEquals("Must return proper GMT formatted string for GMT+520 (eg. GMT+08:20).",
- "GMT+05:20", TimeZone.getTimeZone("GMT+520").getID());
- assertEquals("Must return proper GMT formatted string for GMT+052 (eg. GMT+08:20).",
- "GMT+00:52", TimeZone.getTimeZone("GMT+052").getID());
- assertEquals("Must return proper GMT formatted string for GMT-0 (eg. GMT+08:20).",
- "GMT-00:00", TimeZone.getTimeZone("GMT-0").getID());
- }
-
- /**
- * @tests java.util.TimeZone#setDefault(java.util.TimeZone)
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "setDefault",
- args = {java.util.TimeZone.class}
- )
- @BrokenTest("Runner sets timezone before test, hence old value != default")
- public void test_setDefaultLjava_util_TimeZone() {
- TimeZone oldDefault = TimeZone.getDefault();
- TimeZone zone = new SimpleTimeZone(45, "TEST");
- TimeZone.setDefault(zone);
- assertEquals("timezone not set", zone, TimeZone.getDefault());
- TimeZone.setDefault(null);
- assertEquals("default not restored",
- oldDefault, TimeZone.getDefault());
- }
-
- class Mock_TimeZone extends TimeZone {
- @Override
- public int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) {
- return 0;
- }
-
- @Override
- public int getRawOffset() {
- return 0;
- }
-
- @Override
- public boolean inDaylightTime(Date date) {
- return false;
- }
-
- @Override
- public void setRawOffset(int offsetMillis) {
-
- }
-
- @Override
- public boolean useDaylightTime() {
- return false;
- }
- }
-
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "TimeZone",
- args = {}
- )
- public void test_constructor() {
- assertNotNull(new Mock_TimeZone());
- }
-
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "clone",
- args = {}
- )
- public void test_clone() {
- TimeZone tz1 = TimeZone.getDefault();
- TimeZone tz2 = (TimeZone)tz1.clone();
-
- assertTrue(tz1.equals(tz2));
- }
-
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "getAvailableIDs",
- args = {}
- )
- public void test_getAvailableIDs() {
- String[] str = TimeZone.getAvailableIDs();
- assertNotNull(str);
- assertTrue(str.length != 0);
- for(int i = 0; i < str.length; i++) {
- assertNotNull(TimeZone.getTimeZone(str[i]));
- }
- }
-
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "getAvailableIDs",
- args = {int.class}
- )
- public void test_getAvailableIDsI() {
- String[] str = TimeZone.getAvailableIDs(0);
- assertNotNull(str);
- assertTrue(str.length != 0);
- for(int i = 0; i < str.length; i++) {
- assertNotNull(TimeZone.getTimeZone(str[i]));
- }
- }
-
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "getDisplayName",
- args = {}
- )
- public void test_getDisplayName() {
- TimeZone tz = TimeZone.getTimeZone("GMT-6");
- assertEquals("GMT-06:00", tz.getDisplayName());
- tz = TimeZone.getTimeZone("America/Los_Angeles");
- assertEquals("Pacific Standard Time", tz.getDisplayName());
- }
-
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "getDisplayName",
- args = {java.util.Locale.class}
- )
- public void test_getDisplayNameLjava_util_Locale() {
- Locale[] requiredLocales = {Locale.US, Locale.FRANCE};
- if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
- // locale dependent test, bug 1943269
- return;
- }
- TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
- assertEquals("Pacific Standard Time", tz.getDisplayName(new Locale("US")));
- // BEGIN android-note: RI has "Heure", CLDR/ICU has "heure".
- assertEquals("heure normale du Pacifique", tz.getDisplayName(Locale.FRANCE));
- }
-
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "getDisplayName",
- args = {boolean.class, int.class}
- )
- public void test_getDisplayNameZI() {
- TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
- assertEquals("PST", tz.getDisplayName(false, 0));
- assertEquals("Pacific Daylight Time", tz.getDisplayName(true, 1));
- assertEquals("Pacific Standard Time", tz.getDisplayName(false, 1));
- }
-
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "getDisplayName",
- args = {boolean.class, int.class, java.util.Locale.class}
- )
- @AndroidOnly("fail on RI. See comment below")
- public void test_getDisplayNameZILjava_util_Locale() {
- Locale[] requiredLocales = {Locale.US, Locale.UK, Locale.FRANCE};
- if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
- // locale dependent test, bug 1943269
- return;
- }
- TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
- assertEquals("PST", tz.getDisplayName(false, 0, Locale.US));
- assertEquals("Pacific Daylight Time", tz.getDisplayName(true, 1, Locale.US));
- assertEquals("Pacific Standard Time", tz.getDisplayName(false, 1, Locale.UK));
- //RI fails on following line. RI always returns short time zone name as "PST"
- assertEquals("UTC-08:00", tz.getDisplayName(false, 0, Locale.FRANCE));
- // BEGIN android-note: RI has "Heure", CLDR/ICU has "heure".
- assertEquals("heure avanc\u00e9e du Pacifique", tz.getDisplayName(true, 1, Locale.FRANCE));
- assertEquals("heure normale du Pacifique", tz.getDisplayName(false, 1, Locale.FRANCE));
- }
-
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "getID",
- args = {}
- )
- public void test_getID() {
- TimeZone tz = TimeZone.getTimeZone("GMT-6");
- assertEquals("GMT-06:00", tz.getID());
- tz = TimeZone.getTimeZone("America/Denver");
- assertEquals("America/Denver", tz.getID());
- }
-
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "hasSameRules",
- args = {java.util.TimeZone.class}
- )
- public void test_hasSameRulesLjava_util_TimeZone() {
- TimeZone tz1 = TimeZone.getTimeZone("America/Denver");
- TimeZone tz2 = TimeZone.getTimeZone("America/Phoenix");
- assertEquals(tz1.getDisplayName(false, 0), tz2.getDisplayName(false, 0));
- // Arizona doesn't observe DST. See http://phoenix.about.com/cs/weather/qt/timezone.htm
- assertFalse(tz1.hasSameRules(tz2));
- assertFalse(tz1.hasSameRules(null));
- tz1 = TimeZone.getTimeZone("America/Montreal");
- tz2 = TimeZone.getTimeZone("America/New_York");
- assertEquals(tz1.getDisplayName(), tz2.getDisplayName());
- assertFalse(tz1.getID().equals(tz2.getID()));
- assertTrue(tz2.hasSameRules(tz1));
- assertTrue(tz1.hasSameRules(tz1));
- }
-
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- notes = "",
- method = "setID",
- args = {java.lang.String.class}
- )
- public void test_setIDLjava_lang_String() {
- TimeZone tz = TimeZone.getTimeZone("GMT-6");
- assertEquals("GMT-06:00", tz.getID());
- tz.setID("New ID for GMT-6");
- assertEquals("New ID for GMT-6", tz.getID());
- }
-
- Locale loc = null;
-
- protected void setUp() {
- loc = Locale.getDefault();
- Locale.setDefault(Locale.US);
- }
-
- protected void tearDown() {
- Locale.setDefault(loc);
- }
-}
diff --git a/support/src/test/java/org/apache/harmony/testframework/serialization/SerializationTest.java b/support/src/test/java/org/apache/harmony/testframework/serialization/SerializationTest.java
index 4f1bb64..c43c46c 100644
--- a/support/src/test/java/org/apache/harmony/testframework/serialization/SerializationTest.java
+++ b/support/src/test/java/org/apache/harmony/testframework/serialization/SerializationTest.java
@@ -46,6 +46,7 @@ import java.util.HashSet;
import junit.framework.Assert;
import junit.framework.TestCase;
+import libcore.base.Objects;
/**
* Framework for serialization testing. Subclasses only need to override
@@ -113,7 +114,7 @@ public abstract class SerializationTest extends TestCase {
@Override
public void runBare() throws Throwable {
- if (mode != null && mode.equals(SERIAL_REFERENCE_MODE)) {
+ if (Objects.equal(mode, SERIAL_REFERENCE_MODE)) {
produceGoldenFiles();
} else {
super.runBare();