1/* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18package libcore.java.io; 19 20import java.io.ObjectStreamClass; 21import java.io.ObjectStreamField; 22import java.io.Serializable; 23 24public class OldObjectStreamFieldTest extends junit.framework.TestCase { 25 26 static class DummyClass implements Serializable { 27 private static final long serialVersionUID = 999999999999998L; 28 29 boolean bField = true; 30 char cField = 'c'; 31 double dField = 424242.4242; 32 float fField = 24.12F; 33 int iField = 1965; 34 long lField = 9999999L; 35 short sField = 42; 36 37 long bam = 999L; 38 39 int ham = 9999; 40 41 int sam = 8888; 42 43 Object hola = new Object(); 44 45 public static long getUID() { 46 return serialVersionUID; 47 } 48 } 49 50 class MyObjectStreamField extends ObjectStreamField { 51 public MyObjectStreamField(String name, Class<?> cl) { 52 super(name, cl); 53 } 54 55 public void setOffset(int newValue) { 56 super.setOffset(newValue); 57 } 58 } 59 60 ObjectStreamClass osc; 61 62 ObjectStreamField hamField; 63 64 ObjectStreamField samField; 65 66 ObjectStreamField bamField; 67 68 ObjectStreamField holaField; 69 70 public void test_ConstructorLjava_lang_StringLjava_lang_Class() { 71 ObjectStreamField osf = new ObjectStreamField("aField", int.class); 72 assertTrue("Test 1: Name member not set correctly.", 73 osf.getName().equals("aField")); 74 assertTrue("Test 2: Type member not set correctly.", 75 osf.getType().equals(int.class)); 76 77 // Repeat the tests with a different object to make sure 78 // that we have not tested against default values. 79 osf = new ObjectStreamField("anotherField", String.class); 80 assertTrue("Test 3: Name member not set correctly.", 81 osf.getName().equals("anotherField")); 82 assertTrue("Test 4: Type member not set correctly.", 83 osf.getType().equals(String.class)); 84 85 // Invalid argument tests. 86 try { 87 osf = new ObjectStreamField(null, boolean.class); 88 fail("Test 5: NullPointerException expected."); 89 } catch (NullPointerException e) { 90 // Expected. 91 } 92 try { 93 osf = new ObjectStreamField("thisField", null); 94 fail("Test 6: NullPointerException expected."); 95 } catch (NullPointerException e) { 96 // Expected. 97 } 98 } 99 100 public void test_ConstructorLjava_lang_StringLjava_lang_ClassB() { 101 ObjectStreamField osf = new ObjectStreamField("aField", int.class, false); 102 assertTrue("Test 1: Name member not set correctly.", 103 osf.getName().equals("aField")); 104 assertTrue("Test 2: Type member not set correctly.", 105 osf.getType().equals(int.class)); 106 assertFalse("Test 3: Unshared member not set correctly.", 107 osf.isUnshared()); 108 109 // Repeat the tests with a different object to make sure 110 // that we have not tested against default values. 111 osf = new ObjectStreamField("anotherField", String.class, true); 112 assertTrue("Test 4: Name member not set correctly.", 113 osf.getName().equals("anotherField")); 114 assertTrue("Test 5: Type member not set correctly.", 115 osf.getType().equals(String.class)); 116 assertTrue("Test 6: Unshared member not set correctly.", 117 osf.isUnshared()); 118 119 // Invalid argument tests. 120 try { 121 osf = new ObjectStreamField(null, boolean.class); 122 fail("Test 7: NullPointerException expected."); 123 } catch (NullPointerException e) { 124 // Expected. 125 } 126 try { 127 osf = new ObjectStreamField("thisField", null); 128 fail("Test 8: NullPointerException expected."); 129 } catch (NullPointerException e) { 130 // Expected. 131 } 132 } 133 134 135 public void test_getOffset() { 136 ObjectStreamField[] osfArray; 137 osfArray = osc.getFields(); 138 int[] expectedOffsets = {0, 1, 9, 11, 19, 23, 27, 31, 39, 41, 0}; 139 140 assertTrue("getOffset() did not return reasonable values.", osfArray[0] 141 .getOffset() != osfArray[1].getOffset()); 142 143 for (int i = 0; i < expectedOffsets.length; i++) { 144 assertEquals(String.format("Unexpected value for osfArray[%d].getOffset(): ", i), 145 expectedOffsets[i], osfArray[i].getOffset()); 146 147 } 148 } 149 150 public void test_setOffsetI() { 151 MyObjectStreamField f = new MyObjectStreamField("aField", int.class); 152 f.setOffset(42); 153 assertEquals("Test 1: Unexpected offset value.", 42, f.getOffset()); 154 f.setOffset(2008); 155 assertEquals("Test 2: Unexpected offset value.", 2008, f.getOffset()); 156 } 157 158 public void test_isPrimitive() { 159 // Test for method int java.io.ObjectStreamField.getOffset() 160 ObjectStreamField[] osfArray; 161 osfArray = osc.getFields(); 162 163 for (int i = 0; i < (osfArray.length - 1); i++) { 164 assertTrue(String.format("osfArray[%d].isPrimitive() should return true.", i), 165 osfArray[i].isPrimitive()); 166 } 167 assertFalse(String.format("osfArray[%d].isPrimitive() should return false.", 168 osfArray.length - 1), 169 osfArray[(osfArray.length - 1)].isPrimitive()); 170 } 171 172 protected void setUp() { 173 osc = ObjectStreamClass.lookup(DummyClass.class); 174 bamField = osc.getField("bam"); 175 samField = osc.getField("sam"); 176 hamField = osc.getField("ham"); 177 holaField = osc.getField("hola"); 178 } 179} 180