1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.ini4j.addon;
18
19 import java.util.Arrays;
20 import java.util.prefs.NodeChangeEvent;
21 import java.util.prefs.NodeChangeListener;
22 import java.util.prefs.PreferenceChangeEvent;
23 import java.util.prefs.PreferenceChangeListener;
24 import java.util.prefs.Preferences;
25 import junit.framework.Test;
26 import junit.framework.TestSuite;
27 import org.ini4j.AbstractTestBase;
28 import org.ini4j.IniPreferences;
29
30
31
32
33
34
35 public class PreferencesWrapperTest extends AbstractTestBase
36 {
37 public static final String DOC = "doc";
38 public static final String HAPPY = "happy";
39
40 public static final String OPTION = "height";
41
42
43
44
45
46
47 public PreferencesWrapperTest(String testName)
48 {
49 super(testName);
50 }
51
52
53
54
55
56
57 public static Test suite()
58 {
59 return new TestSuite(PreferencesWrapperTest.class);
60 }
61
62 static class Listener implements PreferenceChangeListener, NodeChangeListener
63 {
64 PreferenceChangeEvent pce;
65 NodeChangeEvent nce;
66
67 @Override
68 public void childAdded(NodeChangeEvent event)
69 {
70 nce = event;
71 }
72
73 @Override
74 public void childRemoved(NodeChangeEvent event)
75 {
76 nce = event;
77 }
78
79 @Override
80 public void preferenceChange(PreferenceChangeEvent event)
81 {
82 pce = event;
83 }
84 }
85
86
87
88
89
90
91 public void testCalls() throws Exception
92 {
93 String value;
94
95 Preferences root = new IniPreferences(loadDwarfs());
96 Preferences toor = new PreferencesWrapper(root);
97
98 Preferences peer = root.node(DOC);
99 Preferences pref = new PreferencesWrapper(peer);
100
101 value = root.node(HAPPY).get(OPTION, null);
102 assertNotNull(value);
103
104
105 assertTrue(Arrays.equals(pref.keys(), peer.keys()));
106
107
108 pref.put(OPTION, value);
109 assertEquals(value, pref.get(OPTION, null));
110 assertEquals(value, peer.get(OPTION, null));
111
112
113 pref.remove(OPTION);
114 assertNull(pref.get(OPTION, null));
115 pref.put(OPTION, value);
116
117
118 pref.clear();
119 assertEquals(0, pref.keys().length);
120 pref.put(OPTION, value);
121
122
123 peer.remove(OPTION);
124 pref.putInt(OPTION, 1);
125 assertEquals(1, pref.getInt(OPTION, 0));
126 assertEquals(1, peer.getInt(OPTION, 0));
127
128
129 peer.remove(OPTION);
130 pref.putLong(OPTION, 1L);
131 assertEquals(1L, pref.getLong(OPTION, 0L));
132 assertEquals(1L, peer.getLong(OPTION, 0L));
133
134
135 peer.remove(OPTION);
136 pref.putFloat(OPTION, 1.0f);
137 assertEquals(1.0f, pref.getFloat(OPTION, 1.0f));
138 assertEquals(1.0f, peer.getFloat(OPTION, 1.0f));
139
140
141 peer.remove(OPTION);
142 pref.putDouble(OPTION, 1.0);
143 assertEquals(1.0, pref.getDouble(OPTION, 1.0));
144 assertEquals(1.0, peer.getDouble(OPTION, 1.0));
145
146
147 peer.remove(OPTION);
148 pref.putBoolean(OPTION, true);
149 assertTrue(pref.getBoolean(OPTION, false));
150 assertTrue(peer.getBoolean(OPTION, false));
151
152
153 peer.remove(OPTION);
154 pref.putByteArray(OPTION, OPTION.getBytes());
155 assertTrue(Arrays.equals(OPTION.getBytes(), pref.getByteArray(OPTION, null)));
156 assertTrue(Arrays.equals(OPTION.getBytes(), peer.getByteArray(OPTION, null)));
157
158
159 assertTrue(Arrays.equals(root.childrenNames(), toor.childrenNames()));
160
161
162 assertEquals(peer.parent(), pref.parent());
163
164
165 assertEquals(root.node(DOC), toor.node(DOC));
166
167 assertTrue(toor.nodeExists(DOC));
168
169 assertEquals(DOC, pref.name());
170
171 assertEquals(peer.absolutePath(), pref.absolutePath());
172
173 assertEquals(peer.isUserNode(), pref.isUserNode());
174
175 assertEquals(peer.toString(), pref.toString());
176
177
178
179
180 toor.flush();
181 toor.sync();
182
183 Listener listener = new Listener();
184
185 toor.addNodeChangeListener(listener);
186 pref.addPreferenceChangeListener(listener);
187
188 pref.clear();
189 pref.putInt(OPTION, 1);
190
191
192
193
194 Thread.sleep(1000);
195
196 pref.removePreferenceChangeListener(listener);
197 pref.putInt(OPTION+OPTION, 1);
198
199 pref.removeNode();
200 assertFalse(root.nodeExists(DOC));
201 pref = toor.node(DOC);
202 toor.removeNodeChangeListener(listener);
203 toor.node(DOC+DOC);
204
205 assertEquals(OPTION, listener.pce.getKey());
206
207
208
209 }
210
211 }