Clover Coverage Report
Coverage timestamp: Fri Feb 14 2014 01:47:57 UTC
81   236   31   5.79
20   161   0.38   14
14     2.21  
1    
 
  GenerateUtf8Test       Line # 42 81 31 87.8% 0.87826085
 
  (10)
 
1    /* This file is part of the project "Hilbert II" - http://www.qedeq.org
2    *
3    * Copyright 2000-2014, 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.bo.service.unicode;
17   
18    import java.io.File;
19    import java.io.IOException;
20    import java.util.HashMap;
21    import java.util.Map;
22   
23    import org.qedeq.base.io.IoUtility;
24    import org.qedeq.base.io.Parameters;
25    import org.qedeq.base.io.UrlUtility;
26    import org.qedeq.base.trace.Trace;
27    import org.qedeq.kernel.bo.common.QedeqBo;
28    import org.qedeq.kernel.bo.module.InternalModuleServiceCall;
29    import org.qedeq.kernel.bo.module.KernelQedeqBo;
30    import org.qedeq.kernel.bo.test.QedeqBoTestCase;
31    import org.qedeq.kernel.se.common.DefaultModuleAddress;
32    import org.qedeq.kernel.se.common.ModuleAddress;
33    import org.qedeq.kernel.se.common.SourceFileExceptionList;
34    import org.qedeq.kernel.se.visitor.InterruptException;
35   
36    /**
37    * Test generating UTF-8 files for all known samples and scripts.
38    * LATER 20110215 m31: perhaps support more LaTeX commands for unicode generation
39    *
40    * @author Michael Meyling
41    */
 
42    public class GenerateUtf8Test extends QedeqBoTestCase {
43   
44    /** This class. */
45    private static final Class CLASS = GenerateUtf8Test.class;
46    private InternalModuleServiceCall call;
47   
 
48  10 toggle protected void tearDown() throws Exception {
49  10 endServiceCall(call);
50  10 super.tearDown();
51    }
52   
 
53  1 toggle public void testGeneration1() throws Exception {
54  1 try {
55  1 generate(getDocDir(), "math/qedeq_logic_v1.xml", false);
56    } catch (SourceFileExceptionList e) {
57  1 assertEquals(4, e.size());
58    }
59    }
60   
 
61  1 toggle public void testGeneration1b() throws Exception {
62  1 generate(getDocDir(), "math/qedeq_formal_logic_v1.xml", false);
63    }
64   
 
65  1 toggle public void testGeneration2() throws Exception {
66  1 try {
67  1 generate(getDocDir(), "sample/qedeq_sample1.xml", false);
68    } catch (SourceFileExceptionList e) {
69  1 assertEquals(4, e.size());
70    }
71    }
72   
 
73  1 toggle public void testGeneration3() throws Exception {
74  1 generate(getDocDir(), "sample/qedeq_sample2.xml", false);
75    }
76   
 
77  1 toggle public void testGeneration3b() throws Exception {
78  1 generate(getDocDir(), "sample/qedeq_sample3.xml", false);
79    }
80   
 
81  1 toggle public void testGeneration3c() throws Exception {
82  1 generate(getDocDir(), "sample/qedeq_sample4.xml", false);
83    }
84   
 
85  1 toggle public void testGeneration4() throws Exception {
86  1 generate(getDocDir(), "math/qedeq_set_theory_v1.xml", false);
87    }
88   
 
89  1 toggle public void testGeneration5() throws Exception {
90  1 try {
91  1 generate(getDocDir(), "project/qedeq_basic_concept.xml", false);
92    } catch (SourceFileExceptionList e) {
93  1 assertEquals(14, e.size());
94    }
95    }
96   
 
97  1 toggle public void testGeneration6() throws Exception {
98  1 try {
99  1 generate(getDocDir(), "project/qedeq_logic_language.xml", true);
100    } catch (SourceFileExceptionList e) {
101    // System.out.println(e);
102  1 assertEquals(8, e.size());
103    }
104    }
105   
 
106  1 toggle public void testGeneration7() throws Exception {
107  1 generate(getIndir(), "proof/proof_003.xml", true);
108    }
109   
110   
111    /**
112    * Call the generation of one UTF-8 file and copy XML source to same destination directory for
113    * all supported languages.
114    *
115    * @param dir Start directory.
116    * @param xml Relative path to XML file. Must not be <code>null</code>.
117    * @param onlyEn Generate only for language "en".
118    * @throws Exception Failure.
119    */
 
120  10 toggle public void generate(final File dir, final String xml, final boolean onlyEn) throws Exception {
121  10 final File destinationDirectory = new File(getGenDir(), "doc");
122  10 final SourceFileExceptionList sfe = new SourceFileExceptionList();
123  10 try {
124  10 generate(dir, xml, "en", destinationDirectory);
125    } catch (SourceFileExceptionList e) {
126  4 sfe.add(e);
127    }
128  10 if (!onlyEn) {
129  8 try {
130  8 generate(dir, xml, "de", destinationDirectory);
131    } catch (SourceFileExceptionList e) {
132  3 sfe.add(e);
133    }
134    }
135  10 if (sfe.size() > 0) {
136  4 throw sfe;
137    }
138    }
139   
140    /**
141    * Call the generation of one UTF-8 file and copy XML source to same destination directory.
142    *
143    * @param dir Start directory.
144    * @param xml Relative path to XML file. Must not be <code>null</code>.
145    * @param language Generate text in this language. Can be <code>null</code>.
146    * @param destinationDirectory Directory path for UTF-8 file. Must not be <code>null</code>.
147    */
 
148  18 toggle public void generate(final File dir, final String xml, final String language,
149    final File destinationDirectory) throws IOException, SourceFileExceptionList, InterruptException {
150  18 final File xmlFile = new File(dir, xml);
151  18 final ModuleAddress address = getServices().getModuleAddress(
152    UrlUtility.toUrl(xmlFile));
153  18 final KernelQedeqBo prop = (KernelQedeqBo) getServices().loadModule(
154    address);
155  18 if (prop.hasErrors()) {
156  0 throw prop.getErrors();
157    }
158  18 getServices().loadRequiredModules(prop.getModuleAddress());
159  18 if (prop.hasErrors()) {
160  0 throw prop.getErrors();
161    }
162  18 getServices().checkWellFormedness(prop.getModuleAddress());
163  18 if (prop.hasErrors()) {
164  0 throw prop.getErrors();
165    }
166  18 if (prop.hasErrors()) {
167  0 throw prop.getErrors();
168    }
169   
170  18 final String web = "http://www.qedeq.org/"
171  18 + getInternalServices().getKernelVersionDirectory() + (!xml.startsWith("sample") ? "/doc/" : "/") + xml;
172  18 final ModuleAddress webAddress = new DefaultModuleAddress(web);
173  18 getInternalServices().getLocalFilePath(webAddress);
174  18 IoUtility.copyFile(xmlFile, getInternalServices().getLocalFilePath(webAddress));
175   
176  18 getServices().checkWellFormedness(webAddress);
177  18 final QedeqBo webBo = getServices().getQedeqBo(webAddress);
178  18 final File utfFile = new File(destinationDirectory, xml.substring(0, xml.lastIndexOf('.'))
179    + "_" + language + ".txt");
180  18 System.out.println(utfFile);
181  18 generate((KernelQedeqBo) webBo, utfFile, language, "1");
182    // final File utfCopy = new File(dir, new File(new File(xml).getParent(), utfFile.getName())
183    // .getPath());
184    // IoUtility.copyFile(utfFile, utfCopy);
185  18 final File xmlCopy = new File(destinationDirectory, xml);
186  18 IoUtility.copyFile(xmlFile, xmlCopy);
187  18 if (webBo.hasErrors()) {
188  0 throw webBo.getErrors();
189    }
190  18 if (webBo.hasWarnings()) {
191  7 throw webBo.getWarnings();
192    }
193    }
194   
195    /**
196    * Generate UTF-8 file out of XML file.
197    *
198    * @param prop Take this QEDEQ module.
199    * @param to Write to this file. Could be <code>null</code>.
200    * @param language Resulting language. Could be <code>null</code>.
201    * @param level Resulting detail level. Could be <code>null</code>.
202    * @return File name of generated UTF-8 file.
203    * @throws SourceFileExceptionList Something went wrong.
204    */
 
205  18 toggle public String generate(final KernelQedeqBo prop, final File to, final String language,
206    final String level) throws SourceFileExceptionList, InterruptException {
207  18 final String method = "generate(String, String, String, String)";
208  18 try {
209  18 Trace.begin(CLASS, method);
210  18 Trace.param(CLASS, method, "prop", prop);
211  18 Trace.param(CLASS, method, "to", to);
212  18 Trace.param(CLASS, method, "language", language);
213  18 Trace.param(CLASS, method, "level", level);
214  18 final Map parameters = new HashMap();
215  18 parameters.put("info", "true");
216  18 parameters.put("brief", "false");
217  18 parameters.put("maximumColumn", "80");
218  18 call = createServiceCall("generate UTF-8", prop);
219  18 final String source =(new Qedeq2Utf8Executor(new Qedeq2Utf8Plugin(), prop, new Parameters(parameters)))
220    .generateUtf8(call.getInternalServiceProcess(), language, "1");
221  18 if (to != null) {
222  18 IoUtility.createNecessaryDirectories(to);
223  18 IoUtility.copyFile(new File(source), to);
224  18 return to.getCanonicalPath();
225    }
226  0 return prop.getName();
227    } catch (IOException e) {
228  0 Trace.trace(CLASS, method, e);
229  0 throw new RuntimeException(e);
230    } finally {
231  18 endServiceCall(call);
232  18 Trace.end(CLASS, method);
233    }
234    }
235   
236    }