1 |
| package org.jboss.cache.util; |
2 |
| |
3 |
| import junit.framework.TestCase; |
4 |
| |
5 |
| import java.io.ByteArrayInputStream; |
6 |
| import java.io.ByteArrayOutputStream; |
7 |
| import java.io.ObjectInputStream; |
8 |
| import java.io.ObjectOutputStream; |
9 |
| import java.util.HashMap; |
10 |
| import java.util.Map; |
11 |
| |
12 |
| public class MapCopyTest extends TestCase |
13 |
| { |
14 |
| |
15 |
1
| public void testSerializable() throws Exception
|
16 |
| { |
17 |
1
| HashMap hm = new HashMap();
|
18 |
1
| hm.put(null, null);
|
19 |
1
| hm.put("y", "z");
|
20 |
1
| MapCopy mc = new MapCopy(hm);
|
21 |
1
| assertEquals(hm, mc);
|
22 |
1
| ByteArrayOutputStream os = new ByteArrayOutputStream();
|
23 |
1
| ObjectOutputStream oos = new ObjectOutputStream(os);
|
24 |
1
| oos.writeObject(mc);
|
25 |
1
| ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray());
|
26 |
1
| ObjectInputStream ois = new ObjectInputStream(is);
|
27 |
1
| Object o = ois.readObject();
|
28 |
1
| assertEquals(hm, o);
|
29 |
| } |
30 |
| |
31 |
1
| public void testNull()
|
32 |
| { |
33 |
1
| HashMap hm = new HashMap();
|
34 |
1
| hm.put(null, null);
|
35 |
1
| MapCopy mc = new MapCopy(hm);
|
36 |
1
| assertEquals(hm, mc);
|
37 |
1
| assertEquals(hm.toString(), mc.toString());
|
38 |
| |
39 |
1
| hm.put(null, "x");
|
40 |
1
| hm.put("y", null);
|
41 |
1
| mc = new MapCopy(hm);
|
42 |
1
| mc.toString();
|
43 |
1
| assertEquals(true, mc.containsKey("y"));
|
44 |
| } |
45 |
| |
46 |
1
| public void testAll()
|
47 |
| { |
48 |
1
| HashMap hm = new HashMap();
|
49 |
1
| hm.put("a", "b");
|
50 |
1
| hm.put("b", "c");
|
51 |
1
| MapCopy mc = new MapCopy(hm);
|
52 |
1
| assertEquals(hm, mc);
|
53 |
1
| assertEquals(hm.size(), mc.size());
|
54 |
1
| try
|
55 |
| { |
56 |
1
| mc.clear();
|
57 |
0
| fail("read only");
|
58 |
| } |
59 |
| catch (UnsupportedOperationException e) |
60 |
| { |
61 |
| } |
62 |
1
| HashMap bhm = new HashMap(hm);
|
63 |
1
| hm.put("b", "d");
|
64 |
1
| assertEquals(bhm, mc);
|
65 |
1
| Map.Entry me = (Map.Entry) mc.entrySet().iterator().next();
|
66 |
1
| try
|
67 |
| { |
68 |
1
| me.setValue("arg");
|
69 |
0
| fail("read only");
|
70 |
| } |
71 |
| catch (UnsupportedOperationException e) |
72 |
| { |
73 |
| } |
74 |
| } |
75 |
| |
76 |
1
| public void testModifications()
|
77 |
| { |
78 |
1
| Map hm = new HashMap();
|
79 |
1
| hm.put("a", "b");
|
80 |
1
| Map mc = new MapCopy(hm);
|
81 |
| |
82 |
1
| try
|
83 |
| { |
84 |
1
| mc.put("x", "y");
|
85 |
0
| fail("should fail");
|
86 |
| } |
87 |
| catch (UnsupportedOperationException uoe) |
88 |
| { |
89 |
| |
90 |
| } |
91 |
| |
92 |
1
| try
|
93 |
| { |
94 |
1
| mc.remove("a");
|
95 |
0
| fail("should fail");
|
96 |
| } |
97 |
| catch (UnsupportedOperationException uoe) |
98 |
| { |
99 |
| |
100 |
| } |
101 |
| |
102 |
1
| try
|
103 |
| { |
104 |
1
| mc.keySet().iterator().remove();
|
105 |
0
| fail("should fail");
|
106 |
| } |
107 |
| catch (UnsupportedOperationException uoe) |
108 |
| { |
109 |
| |
110 |
| } |
111 |
| |
112 |
1
| try
|
113 |
| { |
114 |
1
| mc.entrySet().iterator().remove();
|
115 |
0
| fail("should fail");
|
116 |
| } |
117 |
| catch (UnsupportedOperationException uoe) |
118 |
| { |
119 |
| |
120 |
| } |
121 |
| |
122 |
1
| try
|
123 |
| { |
124 |
1
| mc.values().iterator().remove();
|
125 |
0
| fail("should fail");
|
126 |
| } |
127 |
| catch (UnsupportedOperationException uoe) |
128 |
| { |
129 |
| |
130 |
| } |
131 |
| |
132 |
| |
133 |
| } |
134 |
| } |