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 readConfig(Gate.getUrl("tests/gate.xml"));
78
79 CreoleRegister reg = Gate.getCreoleRegister();
82 Set dirs = reg.getDirectories();
83 assertTrue(
84 "CREOLE register doesn't contain URL from test gate.xml",
85 dirs != null && ! dirs.isEmpty() &&
86 dirs.contains(new URL("http://somewhere.on.the.net/creole/"))
87 );
88
89 String fullSizeKeyName = "FULLSIZE";
91 String fullSizeValueName = "yes";
92 Map gateConfig = Gate.getUserConfig();
93 assertNotNull("no gate config map", gateConfig);
94 String fullSizeValue = (String) gateConfig.get(fullSizeKeyName);
95 assertNotNull("no full size value", fullSizeValue);
96 assertEquals(
97 "incorrect config data from tests/gate.xml",
98 fullSizeValueName, fullSizeValue
99 );
100
101 gateConfig.clear();
103
104
105 }
121
122 public void testConfigUpdating() throws Exception {
123 Map configMap = Gate.getUserConfig();
126 configMap.clear();
127
128 String configName = Gate.getUserConfigFileName();
130 File userConfigFile = new File(configName);
131 File savedConfigFile = null;
132 if(userConfigFile.exists()) {
133 if(DEBUG) {
134 Out.prln(userConfigFile);
135 Out.prln("can write: " + userConfigFile.canWrite());
136 }
137 String userConfigDirectory = userConfigFile.getParent();
138 if(userConfigDirectory == null)
139 userConfigDirectory = "";
140 savedConfigFile = new File(
141 userConfigDirectory + Strings.getFileSep() +
142 "__saved_gate.xml__for_TestConfig__" + System.currentTimeMillis()
143 );
144 if(DEBUG) Out.prln(savedConfigFile);
145 boolean renamed = userConfigFile.renameTo(savedConfigFile);
146 assertTrue("rename failed", renamed);
147 }
148 assertTrue("user config file still there", ! userConfigFile.exists());
149
150 Gate.writeUserConfig();
154 String writtenConfig = Files.getString(new File(configName));
155 String empty = Gate.getEmptyConfigFile();
156
158 configMap.put("A", "1");
160 configMap.put("B", "2");
161
162 Gate.writeUserConfig();
165 configMap.clear();
166 readConfig(userConfigFile.toURL());
167
168 userConfigFile.delete();
170 if(savedConfigFile != null) {
171 savedConfigFile.renameTo(userConfigFile);
172 }
173
174 }
176
177 public void testSessionStateFileNaming() throws Exception {
178 String fileSep = Strings.getFileSep();
179 if(DEBUG) {
180 Out.prln("file sep is: " + fileSep);
181 }
182
183 if(Gate.runningOnUnix()) {
184 assertTrue(fileSep.equals("/"));
185 assertTrue(
186 Gate.getUserSessionFileName().endsWith("."+GateConstants.GATE_DOT_SER)
187 );
188 } else {
189 assertTrue(! fileSep.equals("/"));
190 assertTrue(
191 ! Gate.getUserSessionFileName().endsWith("."+GateConstants.GATE_DOT_SER)
192 );
193 }
194
195 }
197
198 public void testConfigFileNaming() throws Exception {
199 String fileSep = Strings.getFileSep();
200 if(DEBUG) {
201 Out.prln("file sep is: " + fileSep);
202 }
203
204 if(Gate.runningOnUnix()) {
205 assertTrue(fileSep.equals("/"));
206 assertTrue(
207 Gate.getUserConfigFileName().endsWith("."+GateConstants.GATE_DOT_XML)
208 );
209 } else {
210 assertTrue(! fileSep.equals("/"));
211 assertTrue(
212 ! Gate.getUserConfigFileName().endsWith("."+GateConstants.GATE_DOT_XML)
213 );
214 }
215
216 }
218
219 public static Test suite() {
220 return new TestSuite(TestConfig.class);
221 }
223 }