1
15
16 package gate.config;
17
18 import java.io.*;
19 import java.net.URL;
20 import java.util.Map;
21 import java.util.Set;
22
23 import junit.framework.*;
24
25 import gate.*;
26 import gate.util.*;
27
28
30 public class TestConfig extends TestCase
31 {
32
33 private static final boolean DEBUG = false;
34
35
36 public TestConfig(String name) throws GateException { super(name); }
37
38
39 public void setUp() throws Exception {
40 CreoleRegister register = Gate.getCreoleRegister();
41 register.registerDirectories(Gate.getUrl("tests"));
42 }
44
47 public void tearDown() throws Exception {
48 CreoleRegister register = Gate.getCreoleRegister();
49 register.clear();
50 Gate.init();
51 }
53
56 private void readConfig(URL configUrl) throws Exception {
57 ConfigDataProcessor configProcessor = new ConfigDataProcessor();
58
59 InputStream configStream = null;
61 try {
62 configStream = configUrl.openStream();
63 } catch(IOException e) {
64 throw new GateException(
65 "Couldn't open config data test file: " + configUrl + " " + e
66 );
67 }
68 if (DEBUG)
69 Out.prln(
70 "Parsing config file ... " + configStream + "from URL" + configUrl
71 );
72 configProcessor.parseConfigFile(configStream, configUrl);
73 }
75
76 public void testConfigReading() throws Exception {
77 System.out.println("Reading GATE config from : " + Gate.getUrl("tests/gate.xml"));
78 readConfig(Gate.getUrl("tests/gate.xml"));
79
80 CreoleRegister reg = Gate.getCreoleRegister();
83 Set dirs = reg.getDirectories();
84 assertTrue(
85 "CREOLE register doesn't contain URL from test gate.xml",
86 dirs != null && ! dirs.isEmpty() &&
87 dirs.contains(new URL("http://gate.ac.uk/tests/"))
88 );
89
90 String fullSizeKeyName = "FULLSIZE";
92 String fullSizeValueName = "yes";
93 Map gateConfig = Gate.getUserConfig();
94 assertNotNull("no gate config map", gateConfig);
95 String fullSizeValue = (String) gateConfig.get(fullSizeKeyName);
96 assertNotNull("no full size value", fullSizeValue);
97 assertEquals(
98 "incorrect config data from tests/gate.xml",
99 fullSizeValueName, fullSizeValue
100 );
101
102 gateConfig.clear();
104
105
106 }
122
123 public void testConfigUpdating() throws Exception {
124 Map configMap = Gate.getUserConfig();
127 configMap.clear();
128
129 File userConfigFile = Gate.getUserConfigFile();
133 String configName = userConfigFile.getAbsolutePath();
134 File savedConfigFile = null;
135 if(userConfigFile.exists()) {
136 if(DEBUG) {
137 Out.prln(userConfigFile);
138 Out.prln("can write: " + userConfigFile.canWrite());
139 }
140 String userConfigDirectory = userConfigFile.getParent();
141 if(userConfigDirectory == null)
142 userConfigDirectory = "";
143 savedConfigFile = new File(
144 userConfigDirectory + Strings.getFileSep() +
145 "__saved_gate.xml__for_TestConfig__" + System.currentTimeMillis()
146 );
147 if(DEBUG) Out.prln(savedConfigFile);
148 boolean renamed = userConfigFile.renameTo(savedConfigFile);
149 assertTrue("rename failed", renamed);
150 }
151 assertTrue("user config file still there", ! userConfigFile.exists());
152
153 Gate.writeUserConfig();
157 String writtenConfig = Files.getString(new File(configName));
158 String empty = Gate.getEmptyConfigFile();
159
161 configMap.put("A", "1");
163 configMap.put("B", "2");
164
165 Gate.writeUserConfig();
168 configMap.clear();
169 readConfig(userConfigFile.toURL());
170
171 userConfigFile.delete();
173 if(savedConfigFile != null) {
174 savedConfigFile.renameTo(userConfigFile);
175 }
176
177 }
179
180 public void testSessionStateFileNaming() throws Exception {
181 String fileSep = Strings.getFileSep();
182 if(DEBUG) {
183 Out.prln("file sep is: " + fileSep);
184 }
185
186 if(Gate.runningOnUnix()) {
187 assertTrue(fileSep.equals("/"));
188 assertTrue(
189 Gate.getUserSessionFileName().endsWith("."+GateConstants.GATE_DOT_SER)
190 );
191 } else {
192 assertTrue(! fileSep.equals("/"));
193 assertTrue(
194 ! Gate.getUserSessionFileName().endsWith("."+GateConstants.GATE_DOT_SER)
195 );
196 }
197
198 }
200
201 public void testConfigFileNaming() throws Exception {
202 String fileSep = Strings.getFileSep();
203 if(DEBUG) {
204 Out.prln("file sep is: " + fileSep);
205 }
206
207 if(Gate.runningOnUnix()) {
208 assertTrue(fileSep.equals("/"));
209 assertTrue(
210 Gate.getDefaultUserConfigFileName().endsWith("."+GateConstants.GATE_DOT_XML)
211 );
212 } else {
213 assertTrue(! fileSep.equals("/"));
214 assertTrue(
215 ! Gate.getDefaultUserConfigFileName().endsWith("."+GateConstants.GATE_DOT_XML)
216 );
217 }
218
219 }
221
222 public static Test suite() {
223 return new TestSuite(TestConfig.class);
224 }
226 }