Clover Coverage Report
Coverage timestamp: Fri May 24 2013 13:47:27 UTC
197   310   23   14.07
4   263   0.12   14
14     1.64  
1    
 
  DefaultModuleAddressTest       Line # 36 197 23 95.3% 0.95348835
 
  (12)
 
1    /* This file is part of the project "Hilbert II" - http://www.qedeq.org
2    *
3    * Copyright 2000-2013, Michael Meyling <mime@qedeq.org>.
4    *
5    * "Hilbert II" is free software; you can redistribute
6    * it and/or modify it under the terms of the GNU General Public
7    * License as published by the Free Software Foundation; either
8    * version 2 of the License, or (at your option) any later version.
9    *
10    * This program is distributed in the hope that it will be useful,
11    * but WITHOUT ANY WARRANTY; without even the implied warranty of
12    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13    * GNU General Public License for more details.
14    */
15   
16    package org.qedeq.kernel.se.common;
17   
18    import java.io.File;
19    import java.net.MalformedURLException;
20    import java.net.URL;
21   
22    import org.apache.commons.io.FilenameUtils;
23    import org.apache.commons.lang.SystemUtils;
24    import org.qedeq.base.io.Path;
25    import org.qedeq.base.test.QedeqTestCase;
26    import org.qedeq.base.utility.EqualsUtility;
27    import org.qedeq.kernel.se.dto.module.LocationListVo;
28    import org.qedeq.kernel.se.dto.module.LocationVo;
29    import org.qedeq.kernel.se.dto.module.SpecificationVo;
30   
31    /**
32    * Test class.
33    *
34    * @author Michael Meyling
35    */
 
36    public class DefaultModuleAddressTest extends QedeqTestCase {
37   
38    private DefaultModuleAddress dflt;
39   
 
40  0 toggle public DefaultModuleAddressTest(){
41  0 super();
42    }
43   
 
44  12 toggle public DefaultModuleAddressTest(final String name){
45  12 super(name);
46    }
47   
48    /**
49    * Test constructor.
50    */
 
51  1 toggle public void testConstructor() throws Exception {
52  1 try {
53  1 dflt = new DefaultModuleAddress("memory");
54    } catch (MalformedURLException e) {
55    // ok
56    }
57  1 dflt = new DefaultModuleAddress();
58  1 assertEquals("default", dflt.getFileName());
59  1 assertEquals("memory:", dflt.getHeader());
60  1 assertEquals("default", dflt.getName());
61  1 assertEquals("", dflt.getPath());
62  1 assertEquals("memory://default", dflt.getUrl());
63  1 assertEquals(false, dflt.isFileAddress());
64  1 assertEquals(false, dflt.isRelativeAddress());
65  1 assertEquals(dflt, dflt.createModuleContext().getModuleLocation());
66  1 dflt = new DefaultModuleAddress(true, "uzsdaf234");
67  1 assertEquals("uzsdaf234", dflt.getFileName());
68  1 assertEquals("memory:", dflt.getHeader());
69  1 assertEquals("uzsdaf234", dflt.getName());
70  1 assertEquals("", dflt.getPath());
71  1 assertEquals("memory://uzsdaf234", dflt.getUrl());
72  1 assertEquals(false, dflt.isFileAddress());
73  1 assertEquals(false, dflt.isRelativeAddress());
74  1 assertEquals(dflt, dflt.createModuleContext().getModuleLocation());
75  1 dflt = new DefaultModuleAddress("hulouo.xml");
76  1 assertEquals("hulouo.xml", dflt.getFileName());
77  1 assertEquals("file://", dflt.getHeader());
78  1 assertEquals("hulouo", dflt.getName());
79  1 assertEquals("", dflt.getPath());
80  1 assertEquals("file://hulouo.xml", dflt.getUrl());
81  1 assertEquals(true, dflt.isFileAddress());
82  1 assertEquals(true, dflt.isRelativeAddress());
83  1 assertEquals(dflt, dflt.createModuleContext().getModuleLocation());
84  1 dflt = new DefaultModuleAddress("file:hulouo.xml");
85  1 assertEquals("hulouo.xml", dflt.getFileName());
86  1 assertEquals("file://", dflt.getHeader());
87  1 assertEquals("hulouo", dflt.getName());
88  1 assertEquals("", dflt.getPath());
89  1 assertEquals("file://hulouo.xml", dflt.getUrl());
90  1 assertEquals(true, dflt.isFileAddress());
91  1 assertEquals(true, dflt.isRelativeAddress());
92  1 dflt = new DefaultModuleAddress("file:///root/hulouo.xml");
93  1 assertEquals("hulouo.xml", dflt.getFileName());
94  1 assertEquals("file://", dflt.getHeader());
95  1 assertEquals("hulouo", dflt.getName());
96  1 assertEquals("/root/", dflt.getPath());
97  1 assertEquals("file:///root/hulouo.xml", dflt.getUrl());
98  1 assertEquals(true, dflt.isFileAddress());
99  1 assertEquals(false, dflt.isRelativeAddress());
100  1 assertEquals(dflt, dflt.createModuleContext().getModuleLocation());
101  1 dflt = new DefaultModuleAddress("http:hulouo.xml");
102  1 assertEquals("hulouo.xml", dflt.getFileName());
103  1 assertEquals("http:", dflt.getHeader());
104  1 assertEquals("hulouo", dflt.getName());
105  1 assertEquals("", dflt.getPath());
106  1 assertEquals("http:hulouo.xml", dflt.getUrl());
107  1 assertEquals(false, dflt.isFileAddress());
108  1 assertEquals(true, dflt.isRelativeAddress());
109  1 assertEquals(dflt, dflt.createModuleContext().getModuleLocation());
110  1 dflt = new DefaultModuleAddress("http://unknown.com/hulouo.xml");
111  1 assertEquals("hulouo.xml", dflt.getFileName());
112  1 assertEquals("http://unknown.com", dflt.getHeader());
113  1 assertEquals("hulouo", dflt.getName());
114  1 assertEquals("/", dflt.getPath());
115  1 assertEquals("http://unknown.com/hulouo.xml", dflt.getUrl());
116  1 assertEquals(false, dflt.isFileAddress());
117  1 assertEquals(false, dflt.isRelativeAddress());
118  1 assertEquals(dflt, dflt.createModuleContext().getModuleLocation());
119  1 dflt = new DefaultModuleAddress("ftp://asmith@ftp.example.org/xx/hulouo.xml");
120  1 assertEquals("hulouo.xml", dflt.getFileName());
121  1 assertEquals("ftp://asmith@ftp.example.org", dflt.getHeader());
122  1 assertEquals("hulouo", dflt.getName());
123  1 assertEquals("/xx/", dflt.getPath());
124  1 assertEquals("ftp://asmith@ftp.example.org/xx/hulouo.xml", dflt.getUrl());
125  1 assertEquals(false, dflt.isFileAddress());
126  1 assertEquals(false, dflt.isRelativeAddress());
127  1 assertEquals(dflt, dflt.createModuleContext().getModuleLocation());
128  1 dflt = new DefaultModuleAddress(true, "i am only a memory");
129  1 assertFalse(dflt.isFileAddress());
130  1 assertFalse(dflt.isRelativeAddress());
131  1 try {
132  1 new DefaultModuleAddress(false, "i am only a memory");
133  0 fail("Exception expected");
134    } catch (Exception e) {
135    }
136  1 try {
137  1 new DefaultModuleAddress(true, null);
138  0 fail("Exception expected");
139    } catch (Exception e) {
140    }
141  1 try {
142  1 new DefaultModuleAddress((File) null);
143  0 fail("Exception expected");
144    } catch (Exception e) {
145    }
146  1 try {
147  1 new DefaultModuleAddress((String) null);
148  0 fail("Exception expected");
149    } catch (Exception e) {
150    }
151  1 try {
152  1 new DefaultModuleAddress((URL) null);
153  0 fail("Exception expected");
154    } catch (Exception e) {
155    }
156  1 try {
157  1 new DefaultModuleAddress(null, null);
158  0 fail("Exception expected");
159    } catch (Exception e) {
160    }
161    }
162   
163    /**
164    * Test hash code generation.
165    */
 
166  1 toggle public void testHashCode() throws Exception {
167  1 final String url = "ftp://asmith@ftp.example.org/xx/hulouo.xml";
168  1 dflt = new DefaultModuleAddress(url);
169  1 assertEquals(url.hashCode(), dflt.hashCode());
170    }
171   
 
172  1 toggle public void testDefaultModuleAddressURL() throws Exception {
173  1 dflt = new DefaultModuleAddress(new URL("http://unknown.com/hulouo.xml"));
174  1 assertEquals("hulouo.xml", dflt.getFileName());
175  1 assertEquals("http://unknown.com", dflt.getHeader());
176  1 assertEquals("hulouo", dflt.getName());
177  1 assertEquals("/", dflt.getPath());
178  1 assertEquals("http://unknown.com/hulouo.xml", dflt.getUrl());
179  1 assertEquals(false, dflt.isFileAddress());
180  1 assertEquals(false, dflt.isRelativeAddress());
181  1 assertEquals(dflt, dflt.createModuleContext().getModuleLocation());
182    }
183   
 
184  1 toggle public void testDefaultModuleAddressFile() throws Exception {
185  1 final File file = new File("unknown/hulouo.xml");
186  1 dflt = new DefaultModuleAddress(file);
187  1 assertEquals("hulouo.xml", dflt.getFileName());
188  1 assertEquals("file://", dflt.getHeader());
189  1 assertEquals("hulouo", dflt.getName());
190  1 assertEquals((SystemUtils.IS_OS_WINDOWS ? "/" : "") + FilenameUtils.separatorsToUnix(
191    file.getCanonicalFile().getParentFile().getPath()) + "/", dflt.getPath());
192  1 assertEquals("file://" + (SystemUtils.IS_OS_WINDOWS ? "/" : "")
193    + FilenameUtils.separatorsToUnix(
194    file.getCanonicalPath()), dflt.getUrl());
195  1 assertEquals(true, dflt.isFileAddress());
196  1 assertEquals(false, dflt.isRelativeAddress());
197  1 assertEquals(dflt, dflt.createModuleContext().getModuleLocation());
198    }
199   
 
200  1 toggle public void testCreateModuleContext() throws Exception {
201  1 dflt = new DefaultModuleAddress("unknown/hulouo.xml");
202  1 assertEquals("hulouo.xml", dflt.getFileName());
203  1 assertEquals("file://", dflt.getHeader());
204  1 assertEquals("hulouo", dflt.getName());
205  1 assertEquals("unknown/", dflt.getPath());
206  1 assertEquals("file://unknown/hulouo.xml", dflt.getUrl());
207  1 assertEquals(true, dflt.isFileAddress());
208  1 assertEquals(true, dflt.isRelativeAddress());
209  1 final ModuleContext context = dflt.createModuleContext();
210  1 assertEquals(dflt, context.getModuleLocation());
211  1 assertEquals("", context.getLocationWithinModule());
212  1 assertEquals(null, context.getStartDelta());
213  1 assertEquals(null, context.getEndDelta());
214    }
215   
 
216  1 toggle public void testEqualsObject() throws Exception {
217  1 final String url = "ftp://asmith@ftp.example.org/xx/hulouo.xml";
218  1 dflt = new DefaultModuleAddress(url);
219  1 final DefaultModuleAddress second = new DefaultModuleAddress(url);
220  1 assertEquals(dflt, second);
221  1 final DefaultModuleAddress third = new DefaultModuleAddress("ftp://asmith@ftp.example.org/xy/hulouo.xml");
222  1 assertFalse(EqualsUtility.equals(dflt, third));
223  1 assertFalse(EqualsUtility.equals(url, dflt));
224  1 assertFalse(dflt.equals(null));
225    }
226   
 
227  1 toggle public void testToString() throws Exception {
228  1 final String url = "ftp://asmith@ftp.example.org/xx/hulouo.xml";
229  1 dflt = new DefaultModuleAddress(url);
230  1 assertEquals(url, dflt.toString());
231    }
232   
 
233  1 toggle public void testGetModulePaths1() throws Exception {
234  1 dflt = new DefaultModuleAddress("http://logic.org/unknown/hulouo.xml");
235  1 ModuleAddress[] r = dflt.getModulePaths(new SpecificationVo());
236  1 assertEquals(0, r.length);
237  1 LocationListVo list = new LocationListVo();
238  1 list.add(new LocationVo("new"));
239  1 r = dflt.getModulePaths(new SpecificationVo("hulouo", "1.00.00",
240    list));
241  1 ModuleAddress n = new DefaultModuleAddress("http://logic.org/unknown/new/hulouo.xml");
242  1 assertEquals(1, r.length);
243  1 assertEquals(n, r[0]);
244  1 list.add(new LocationVo("../now"));
245  1 r = dflt.getModulePaths(new SpecificationVo("hulouo", "1.00.00",
246    list));
247  1 n = new DefaultModuleAddress("http://logic.org/now/hulouo.xml");
248  1 assertEquals(2, r.length);
249  1 assertEquals(n, r[1]);
250    }
251   
 
252  1 toggle public void testGetModulePaths2() throws Exception {
253  1 dflt = new DefaultModuleAddress("file:/unknown/hulouo.xml");
254  1 ModuleAddress[] r = dflt.getModulePaths(new SpecificationVo());
255  1 assertEquals(0, r.length);
256  1 LocationListVo list = new LocationListVo();
257  1 list.add(new LocationVo("new"));
258  1 r = dflt.getModulePaths(new SpecificationVo("hulouo", "1.00.00",
259    list));
260  1 ModuleAddress n = new DefaultModuleAddress("file:/unknown/new/hulouo.xml");
261  1 assertEquals(1, r.length);
262  1 assertEquals(n, r[0]);
263  1 list.add(new LocationVo("../now"));
264  1 r = dflt.getModulePaths(new SpecificationVo("hulouo", "1.00.00",
265    list));
266  1 n = new DefaultModuleAddress("file:/now/hulouo.xml");
267  1 assertEquals(2, r.length);
268  1 assertEquals(n, r[1]);
269    }
270   
271    // should also work with relative addresses!
 
272  1 toggle public void testGetModulePaths3() throws Exception {
273  1 dflt = new DefaultModuleAddress("unknown/hulouo.xml");
274  1 ModuleAddress[] r = dflt.getModulePaths(new SpecificationVo());
275  1 assertEquals(0, r.length);
276  1 LocationListVo list = new LocationListVo();
277  1 list.add(new LocationVo("new"));
278  1 r = dflt.getModulePaths(new SpecificationVo("hulouo", "1.00.00",
279    list));
280  1 ModuleAddress n = new DefaultModuleAddress("unknown/new/hulouo.xml");
281  1 assertEquals(1, r.length);
282  1 assertEquals(n, r[0]);
283  1 list.add(new LocationVo("../now"));
284  1 r = dflt.getModulePaths(new SpecificationVo("hulouo", "1.00.00",
285    list));
286  1 n = new DefaultModuleAddress("now/hulouo.xml");
287  1 assertEquals(2, r.length);
288  1 assertEquals(n, r[1]);
289    }
290   
 
291  1 toggle public void testCreateRelativeAddress() {
292  1 assertEquals("ho", DefaultModuleAddress.createRelativeAddress("http://hi/ti", "http://hi/ho"));
293  1 assertEquals("ho.xml", DefaultModuleAddress.createRelativeAddress("http://hi/tic.xml", "http://hi/ho.xml"));
294  1 assertEquals("http://gu/hi/ho.xml", DefaultModuleAddress.createRelativeAddress("http://go/hi/tic.xml", "http://gu/hi/ho.xml"));
295  1 assertEquals("../ho.xml", DefaultModuleAddress.createRelativeAddress("http://go/hi/tic.xml", "http://go/ho.xml"));
296  1 assertEquals("/../now/hulouo.xml", (new Path("/../now/hulouo.xml")).toString());
297  1 assertEquals("", DefaultModuleAddress.createRelativeAddress("http://hi/ti", "http://hi/ti"));
298    }
299   
 
300  1 toggle public void testCreateRelativeAddress2() {
301  1 assertEquals("hi/ho", DefaultModuleAddress.createRelativeAddress("hi/ti", "hi/ho"));
302  1 assertEquals("ho", DefaultModuleAddress.createRelativeAddress("/hi", "/ho"));
303  1 assertEquals("ho", DefaultModuleAddress.createRelativeAddress("/ti/hi", "/ti/ho"));
304  1 assertEquals("ho", DefaultModuleAddress.createRelativeAddress("hi", "ho"));
305  1 assertEquals("ho", DefaultModuleAddress.createRelativeAddress("hi/ti", "ho"));
306  1 assertEquals("hi/ti/hu", DefaultModuleAddress.createRelativeAddress("hi/ti/ta/ten", "hi/ti/hu"));
307  1 assertEquals("ho", DefaultModuleAddress.createRelativeAddress("hi/ho", "ho"));
308    }
309   
310    }