| /* |
| * 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.io; |
| |
| import dalvik.annotation.TestTargets; |
| import dalvik.annotation.TestLevel; |
| import dalvik.annotation.TestTargetNew; |
| import dalvik.annotation.TestTargetClass; |
| |
| import java.io.ObjectStreamClass; |
| import java.io.ObjectStreamField; |
| import java.io.Serializable; |
| |
| @TestTargetClass(ObjectStreamClass.class) |
| public class ObjectStreamClassTest extends junit.framework.TestCase { |
| |
| static class DummyClass implements Serializable { |
| private static final long serialVersionUID = 999999999999999L; |
| |
| long bam = 999L; |
| |
| int ham = 9999; |
| |
| public static long getUID() { |
| return serialVersionUID; |
| } |
| } |
| |
| /** |
| * @tests java.io.ObjectStreamClass#forClass() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "forClass", |
| args = {} |
| ) |
| public void test_forClass() { |
| // Test for method java.lang.Class java.io.ObjectStreamClass.forClass() |
| // Need to test during serialization to be sure an instance is |
| // returned |
| ObjectStreamClass osc = ObjectStreamClass.lookup(DummyClass.class); |
| assertTrue("forClass returned an object: " + osc.forClass(), osc |
| .forClass().equals(DummyClass.class)); |
| } |
| |
| /** |
| * @tests java.io.ObjectStreamClass#getField(java.lang.String) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "getField", |
| args = {java.lang.String.class} |
| ) |
| public void test_getFieldLjava_lang_String() { |
| // Test for method java.io.ObjectStreamField |
| // java.io.ObjectStreamClass.getField(java.lang.String) |
| ObjectStreamClass osc = ObjectStreamClass.lookup(DummyClass.class); |
| assertEquals("getField did not return correct field", 'J', osc.getField("bam") |
| .getTypeCode()); |
| assertNull("getField did not null for non-existent field", osc |
| .getField("wham")); |
| } |
| |
| /** |
| * @tests java.io.ObjectStreamClass#getFields() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "getFields", |
| args = {} |
| ) |
| public void test_getFields() { |
| // Test for method java.io.ObjectStreamField [] |
| // java.io.ObjectStreamClass.getFields() |
| ObjectStreamClass osc = ObjectStreamClass.lookup(DummyClass.class); |
| ObjectStreamField[] osfArray = osc.getFields(); |
| assertTrue( |
| "Array of fields should be of length 2 but is instead of length: " |
| + osfArray.length, osfArray.length == 2); |
| } |
| |
| /** |
| * @tests java.io.ObjectStreamClass#getName() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "getName", |
| args = {} |
| ) |
| public void test_getName() { |
| // Test for method java.lang.String java.io.ObjectStreamClass.getName() |
| ObjectStreamClass osc = ObjectStreamClass.lookup(DummyClass.class); |
| assertTrue("getName returned incorrect name: " + osc.getName(), osc |
| .getName().equals( |
| "tests.api.java.io.ObjectStreamClassTest$DummyClass")); |
| } |
| |
| /** |
| * @tests java.io.ObjectStreamClass#getSerialVersionUID() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "getSerialVersionUID", |
| args = {} |
| ) |
| public void test_getSerialVersionUID() { |
| // Test for method long java.io.ObjectStreamClass.getSerialVersionUID() |
| ObjectStreamClass osc = ObjectStreamClass.lookup(DummyClass.class); |
| assertTrue("getSerialversionUID returned incorrect uid: " |
| + osc.getSerialVersionUID() + " instead of " |
| + DummyClass.getUID(), osc.getSerialVersionUID() == DummyClass |
| .getUID()); |
| } |
| |
| /** |
| * @tests java.io.ObjectStreamClass#lookup(java.lang.Class) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "lookup", |
| args = {java.lang.Class.class} |
| ) |
| public void test_lookupLjava_lang_Class() { |
| // Test for method java.io.ObjectStreamClass |
| // java.io.ObjectStreamClass.lookup(java.lang.Class) |
| ObjectStreamClass osc = ObjectStreamClass.lookup(DummyClass.class); |
| assertTrue("lookup returned wrong class: " + osc.getName(), osc |
| .getName().equals( |
| "tests.api.java.io.ObjectStreamClassTest$DummyClass")); |
| } |
| |
| /** |
| * @tests java.io.ObjectStreamClass#toString() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "toString", |
| args = {} |
| ) |
| public void test_toString() { |
| // Test for method java.lang.String java.io.ObjectStreamClass.toString() |
| ObjectStreamClass osc = ObjectStreamClass.lookup(DummyClass.class); |
| String oscString = osc.toString(); |
| // The previous test was more specific than the spec so it was replaced |
| // with the test below |
| assertTrue("toString returned incorrect string: " + osc.toString(), |
| oscString.indexOf("serialVersionUID") >= 0 |
| && oscString.indexOf("999999999999999L") >= 0); |
| ; |
| } |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "lookup", |
| args = {java.lang.Class.class} |
| ) |
| public void testSerialization() { |
| ObjectStreamClass osc = ObjectStreamClass.lookup(ObjectStreamClass.class); |
| assertEquals(0, osc.getFields().length); |
| } |
| |
| /** |
| * Sets up the fixture, for example, open a network connection. This method |
| * is called before a test is executed. |
| */ |
| protected void setUp() { |
| } |
| |
| /** |
| * Tears down the fixture, for example, close a network connection. This |
| * method is called after a test is executed. |
| */ |
| protected void tearDown() { |
| } |
| |
| // BEGIN android-added |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Verifies serialization.", |
| method = "!Serialization", |
| args = {} |
| ) |
| public void testFooSerialVersionUid() { |
| assertEquals(-5887964677443030867L, Foo.serialVersionUID()); |
| } |
| |
| /** |
| * An arbitrary class which deliberately tickles various factors affecting |
| * serialVersionUID calculation. |
| */ |
| static abstract class Foo implements Cloneable, Serializable { |
| |
| /** All fields except "private static|transient", which these aren't. */ |
| private final String name = "foo"; |
| static final long now; |
| |
| /** Presence of static initializer has an affect. */ |
| static { |
| now = System.currentTimeMillis(); |
| } |
| |
| /** Non-private constructors. */ |
| Foo() {} |
| protected Foo(int ignored) {} |
| |
| /** Non-private methods. */ |
| synchronized static int foo() { return 0; } |
| static int bar() { return 0; } |
| abstract void tee(); |
| protected native synchronized boolean bob(); |
| protected synchronized void tim() {} |
| |
| /** Calculates Foo's default serialVersionUID. */ |
| static long serialVersionUID() { |
| return ObjectStreamClass.lookup(Foo.class).getSerialVersionUID(); |
| } |
| } |
| |
| public static void main(String[] args) { |
| System.out.println(Foo.serialVersionUID()); |
| } |
| // END android-added |
| } |