1 4 package com.tc.util; 5 6 import com.tc.test.TCTestCase; 7 8 11 public class SettableValueTest extends TCTestCase { 12 13 public void testBasics() throws Exception { 14 SettableValue value = new SettableValue(); 15 16 assertFalse(value.isSet()); 17 assertNull(value.value()); 18 19 value.set(null); 20 assertTrue(value.isSet()); 21 assertNull(value.value()); 22 23 Integer i = new Integer (3); 24 25 value.set(i); 26 assertTrue(value.isSet()); 27 assertSame(i, value.value()); 28 29 value.set(null); 30 assertTrue(value.isSet()); 31 assertNull(value.value()); 32 33 value.unset(); 34 assertFalse(value.isSet()); 35 assertNull(value.value()); 36 } 37 38 public void testDefaultValue() { 39 SettableValue value = new SettableValue(); 40 Object actualValue = new Object (); 41 Object defaultValue = new Object (); 42 assertFalse(actualValue.equals(defaultValue)); 43 assertSame(defaultValue, value.value(defaultValue)); 44 45 value.set(actualValue); 46 assertSame(actualValue, value.value(defaultValue)); 47 48 value.unset(); 49 assertSame(defaultValue, value.value(defaultValue)); 50 51 } 52 53 public void testSerialization() throws Exception { 54 SettableValue value = new SettableValue(); 55 56 SerializationTestUtil.testSerializationAndEquals(value); 57 } 58 59 public void testEquals() throws Exception { 60 SettableValue[] values = new SettableValue[7]; 61 for (int i = 0; i < values.length; ++i) 62 values[i] = new SettableValue(); 63 64 values[0].set(new Integer (5)); 65 values[1].set(null); 66 values[3].set(new Integer (5)); 67 values[4].set(new Integer (6)); 68 values[5].set(null); 69 70 checkEquals(values, 0, new int[] { 0, 3 }); 71 checkEquals(values, 1, new int[] { 1, 5 }); 72 checkEquals(values, 2, new int[] { 2, 6 }); 73 checkEquals(values, 3, new int[] { 3, 0 }); 74 checkEquals(values, 4, new int[] { 4 }); 75 checkEquals(values, 5, new int[] { 5, 1 }); 76 checkEquals(values, 6, new int[] { 6, 2 }); 77 78 for (int i = 0; i < values.length; ++i) { 79 assertEquals(values[i], values[i].clone()); 80 } 81 82 assertFalse(values[0].equals(null)); 83 assertFalse(values[0].equals(new Integer (5))); 84 assertFalse(values[0].equals("foo")); 85 } 86 87 public void testClone() throws Exception { 88 SettableValue unset = new SettableValue(); 89 SettableValue setToNull = new SettableValue(); 90 SettableValue setToValue = new SettableValue(); 91 92 setToNull.set(null); 93 setToValue.set("foo"); 94 95 SettableValue unsetClone = (SettableValue) unset.clone(); 96 assertEquals(unset, unsetClone); 97 assertFalse(unset == unsetClone); 98 99 SettableValue setToNullClone = (SettableValue) setToNull.clone(); 100 assertEquals(setToNull, setToNullClone); 101 assertFalse(setToNull == setToNullClone); 102 103 SettableValue setToValueClone = (SettableValue) setToValue.clone(); 104 assertEquals(setToValue, setToValueClone); 105 assertFalse(setToValue == setToValueClone); 106 } 107 108 private void checkEquals(SettableValue[] values, int index, int[] equalsIndices) throws Exception { 109 for (int i = 0; i < values.length; ++i) { 110 boolean equals = values[i].equals(values[index]); 111 boolean shouldEqual = isIn(equalsIndices, i); 112 113 assertEquals("For value " + i + ":", shouldEqual, equals); 114 if (shouldEqual) { 115 assertEquals("For value " + i + ":", values[index].hashCode(), values[i].hashCode()); 116 } 117 } 118 } 119 120 private boolean isIn(int[] search, int theValue) { 121 for (int i = 0; i < search.length; ++i) { 122 if (search[i] == theValue) return true; 123 } 124 return false; 125 } 126 127 } 128 | Popular Tags |