KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > util > SettableValueTest


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tc.util;
5
6 import com.tc.test.TCTestCase;
7
8 /**
9  * Unit test for {@link SettableValue}.
10  */

11 public class SettableValueTest extends TCTestCase {
12
13   public void testBasics() throws Exception JavaDoc {
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 JavaDoc i = new Integer JavaDoc(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 JavaDoc actualValue = new Object JavaDoc();
41     Object JavaDoc defaultValue = new Object JavaDoc();
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 JavaDoc {
54     SettableValue value = new SettableValue();
55     
56     SerializationTestUtil.testSerializationAndEquals(value);
57   }
58
59   public void testEquals() throws Exception JavaDoc {
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 JavaDoc(5));
65     values[1].set(null);
66     values[3].set(new Integer JavaDoc(5));
67     values[4].set(new Integer JavaDoc(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 JavaDoc(5)));
84     assertFalse(values[0].equals("foo"));
85   }
86
87   public void testClone() throws Exception JavaDoc {
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 JavaDoc {
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