1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
package org.qedeq.kernel.se.test; |
17 |
|
|
18 |
|
import java.io.PrintStream; |
19 |
|
import java.lang.reflect.Constructor; |
20 |
|
import java.lang.reflect.Method; |
21 |
|
import java.lang.reflect.Modifier; |
22 |
|
import java.util.ArrayList; |
23 |
|
import java.util.HashMap; |
24 |
|
import java.util.List; |
25 |
|
import java.util.Map; |
26 |
|
|
27 |
|
import org.qedeq.base.io.TextOutput; |
28 |
|
import org.qedeq.kernel.se.base.list.Element; |
29 |
|
import org.qedeq.kernel.se.base.module.Author; |
30 |
|
import org.qedeq.kernel.se.base.module.AuthorList; |
31 |
|
import org.qedeq.kernel.se.base.module.Axiom; |
32 |
|
import org.qedeq.kernel.se.base.module.ChangedRule; |
33 |
|
import org.qedeq.kernel.se.base.module.ChangedRuleList; |
34 |
|
import org.qedeq.kernel.se.base.module.Chapter; |
35 |
|
import org.qedeq.kernel.se.base.module.ChapterList; |
36 |
|
import org.qedeq.kernel.se.base.module.Conclusion; |
37 |
|
import org.qedeq.kernel.se.base.module.ConditionalProof; |
38 |
|
import org.qedeq.kernel.se.base.module.Existential; |
39 |
|
import org.qedeq.kernel.se.base.module.FormalProof; |
40 |
|
import org.qedeq.kernel.se.base.module.FormalProofLine; |
41 |
|
import org.qedeq.kernel.se.base.module.FormalProofLineList; |
42 |
|
import org.qedeq.kernel.se.base.module.FormalProofList; |
43 |
|
import org.qedeq.kernel.se.base.module.Formula; |
44 |
|
import org.qedeq.kernel.se.base.module.FunctionDefinition; |
45 |
|
import org.qedeq.kernel.se.base.module.Header; |
46 |
|
import org.qedeq.kernel.se.base.module.Hypothesis; |
47 |
|
import org.qedeq.kernel.se.base.module.Import; |
48 |
|
import org.qedeq.kernel.se.base.module.ImportList; |
49 |
|
import org.qedeq.kernel.se.base.module.InitialFunctionDefinition; |
50 |
|
import org.qedeq.kernel.se.base.module.InitialPredicateDefinition; |
51 |
|
import org.qedeq.kernel.se.base.module.Latex; |
52 |
|
import org.qedeq.kernel.se.base.module.LatexList; |
53 |
|
import org.qedeq.kernel.se.base.module.LinkList; |
54 |
|
import org.qedeq.kernel.se.base.module.LiteratureItem; |
55 |
|
import org.qedeq.kernel.se.base.module.LiteratureItemList; |
56 |
|
import org.qedeq.kernel.se.base.module.Location; |
57 |
|
import org.qedeq.kernel.se.base.module.LocationList; |
58 |
|
import org.qedeq.kernel.se.base.module.Node; |
59 |
|
import org.qedeq.kernel.se.base.module.NodeType; |
60 |
|
import org.qedeq.kernel.se.base.module.PredicateDefinition; |
61 |
|
import org.qedeq.kernel.se.base.module.Proof; |
62 |
|
import org.qedeq.kernel.se.base.module.ProofList; |
63 |
|
import org.qedeq.kernel.se.base.module.Proposition; |
64 |
|
import org.qedeq.kernel.se.base.module.Qedeq; |
65 |
|
import org.qedeq.kernel.se.base.module.Reason; |
66 |
|
import org.qedeq.kernel.se.base.module.Rename; |
67 |
|
import org.qedeq.kernel.se.base.module.Rule; |
68 |
|
import org.qedeq.kernel.se.base.module.Section; |
69 |
|
import org.qedeq.kernel.se.base.module.SectionList; |
70 |
|
import org.qedeq.kernel.se.base.module.Specification; |
71 |
|
import org.qedeq.kernel.se.base.module.Subsection; |
72 |
|
import org.qedeq.kernel.se.base.module.SubsectionList; |
73 |
|
import org.qedeq.kernel.se.base.module.SubsectionType; |
74 |
|
import org.qedeq.kernel.se.base.module.SubstFree; |
75 |
|
import org.qedeq.kernel.se.base.module.SubstFunc; |
76 |
|
import org.qedeq.kernel.se.base.module.SubstPred; |
77 |
|
import org.qedeq.kernel.se.base.module.Term; |
78 |
|
import org.qedeq.kernel.se.base.module.Universal; |
79 |
|
import org.qedeq.kernel.se.base.module.UsedByList; |
80 |
|
import org.qedeq.kernel.se.dto.list.DefaultAtom; |
81 |
|
import org.qedeq.kernel.se.dto.list.DefaultElementList; |
82 |
|
import org.qedeq.kernel.se.dto.module.AddVo; |
83 |
|
import org.qedeq.kernel.se.dto.module.AuthorListVo; |
84 |
|
import org.qedeq.kernel.se.dto.module.AuthorVo; |
85 |
|
import org.qedeq.kernel.se.dto.module.AxiomVo; |
86 |
|
import org.qedeq.kernel.se.dto.module.ChangedRuleListVo; |
87 |
|
import org.qedeq.kernel.se.dto.module.ChangedRuleVo; |
88 |
|
import org.qedeq.kernel.se.dto.module.ChapterListVo; |
89 |
|
import org.qedeq.kernel.se.dto.module.ChapterVo; |
90 |
|
import org.qedeq.kernel.se.dto.module.ConclusionVo; |
91 |
|
import org.qedeq.kernel.se.dto.module.ConditionalProofVo; |
92 |
|
import org.qedeq.kernel.se.dto.module.ExistentialVo; |
93 |
|
import org.qedeq.kernel.se.dto.module.FormalProofLineListVo; |
94 |
|
import org.qedeq.kernel.se.dto.module.FormalProofLineVo; |
95 |
|
import org.qedeq.kernel.se.dto.module.FormalProofListVo; |
96 |
|
import org.qedeq.kernel.se.dto.module.FormalProofVo; |
97 |
|
import org.qedeq.kernel.se.dto.module.FormulaVo; |
98 |
|
import org.qedeq.kernel.se.dto.module.FunctionDefinitionVo; |
99 |
|
import org.qedeq.kernel.se.dto.module.HeaderVo; |
100 |
|
import org.qedeq.kernel.se.dto.module.HypothesisVo; |
101 |
|
import org.qedeq.kernel.se.dto.module.ImportListVo; |
102 |
|
import org.qedeq.kernel.se.dto.module.ImportVo; |
103 |
|
import org.qedeq.kernel.se.dto.module.InitialFunctionDefinitionVo; |
104 |
|
import org.qedeq.kernel.se.dto.module.InitialPredicateDefinitionVo; |
105 |
|
import org.qedeq.kernel.se.dto.module.LatexListVo; |
106 |
|
import org.qedeq.kernel.se.dto.module.LatexVo; |
107 |
|
import org.qedeq.kernel.se.dto.module.LinkListVo; |
108 |
|
import org.qedeq.kernel.se.dto.module.LiteratureItemListVo; |
109 |
|
import org.qedeq.kernel.se.dto.module.LiteratureItemVo; |
110 |
|
import org.qedeq.kernel.se.dto.module.LocationListVo; |
111 |
|
import org.qedeq.kernel.se.dto.module.LocationVo; |
112 |
|
import org.qedeq.kernel.se.dto.module.ModusPonensVo; |
113 |
|
import org.qedeq.kernel.se.dto.module.NodeVo; |
114 |
|
import org.qedeq.kernel.se.dto.module.PredicateDefinitionVo; |
115 |
|
import org.qedeq.kernel.se.dto.module.ProofListVo; |
116 |
|
import org.qedeq.kernel.se.dto.module.ProofVo; |
117 |
|
import org.qedeq.kernel.se.dto.module.PropositionVo; |
118 |
|
import org.qedeq.kernel.se.dto.module.QedeqVo; |
119 |
|
import org.qedeq.kernel.se.dto.module.RenameVo; |
120 |
|
import org.qedeq.kernel.se.dto.module.RuleVo; |
121 |
|
import org.qedeq.kernel.se.dto.module.SectionListVo; |
122 |
|
import org.qedeq.kernel.se.dto.module.SectionVo; |
123 |
|
import org.qedeq.kernel.se.dto.module.SpecificationVo; |
124 |
|
import org.qedeq.kernel.se.dto.module.SubsectionListVo; |
125 |
|
import org.qedeq.kernel.se.dto.module.SubsectionVo; |
126 |
|
import org.qedeq.kernel.se.dto.module.SubstFreeVo; |
127 |
|
import org.qedeq.kernel.se.dto.module.SubstFuncVo; |
128 |
|
import org.qedeq.kernel.se.dto.module.SubstPredVo; |
129 |
|
import org.qedeq.kernel.se.dto.module.TermVo; |
130 |
|
import org.qedeq.kernel.se.dto.module.UniversalVo; |
131 |
|
import org.qedeq.kernel.se.dto.module.UsedByListVo; |
132 |
|
|
133 |
|
|
134 |
|
|
135 |
|
|
136 |
|
@author |
137 |
|
|
|
|
| 82.1% |
Uncovered Elements: 42 (235) |
Complexity: 46 |
Complexity Density: 0.28 |
|
138 |
|
public class QedeqVoCreator { |
139 |
|
|
140 |
|
|
141 |
|
private static final Map interface2ConcreteClass = new HashMap(); |
142 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (47) |
Complexity: 1 |
Complexity Density: 0.02 |
|
143 |
2
|
static {... |
144 |
2
|
interface2ConcreteClass.put(Author.class, AuthorVo.class); |
145 |
2
|
interface2ConcreteClass.put(AuthorList.class, AuthorListVo.class); |
146 |
2
|
interface2ConcreteClass.put(Axiom.class, AxiomVo.class); |
147 |
2
|
interface2ConcreteClass.put(ChangedRule.class, ChangedRuleVo.class); |
148 |
2
|
interface2ConcreteClass.put(ChangedRuleList.class, ChangedRuleListVo.class); |
149 |
2
|
interface2ConcreteClass.put(Chapter.class, ChapterVo.class); |
150 |
2
|
interface2ConcreteClass.put(ChapterList.class, ChapterListVo.class); |
151 |
2
|
interface2ConcreteClass.put(ConditionalProof.class, ConditionalProofVo.class); |
152 |
2
|
interface2ConcreteClass.put(Conclusion.class, ConclusionVo.class); |
153 |
2
|
interface2ConcreteClass.put(InitialPredicateDefinition.class, InitialPredicateDefinitionVo.class); |
154 |
2
|
interface2ConcreteClass.put(PredicateDefinition.class, PredicateDefinitionVo.class); |
155 |
2
|
interface2ConcreteClass.put(Existential.class, ExistentialVo.class); |
156 |
2
|
interface2ConcreteClass.put(InitialFunctionDefinition.class, InitialFunctionDefinitionVo.class); |
157 |
2
|
interface2ConcreteClass.put(FunctionDefinition.class, FunctionDefinitionVo.class); |
158 |
2
|
interface2ConcreteClass.put(FormalProof.class, FormalProofVo.class); |
159 |
2
|
interface2ConcreteClass.put(FormalProofList.class, FormalProofListVo.class); |
160 |
2
|
interface2ConcreteClass.put(FormalProofLineList.class, FormalProofLineListVo.class); |
161 |
2
|
interface2ConcreteClass.put(Formula.class, FormulaVo.class); |
162 |
2
|
interface2ConcreteClass.put(Header.class, HeaderVo.class); |
163 |
2
|
interface2ConcreteClass.put(Hypothesis.class, HypothesisVo.class); |
164 |
2
|
interface2ConcreteClass.put(Import.class, ImportVo.class); |
165 |
2
|
interface2ConcreteClass.put(ImportList.class, ImportListVo.class); |
166 |
2
|
interface2ConcreteClass.put(Latex.class, LatexVo.class); |
167 |
2
|
interface2ConcreteClass.put(LatexList.class, LatexListVo.class); |
168 |
2
|
interface2ConcreteClass.put(LinkList.class, LinkListVo.class); |
169 |
2
|
interface2ConcreteClass.put(LiteratureItem.class, LiteratureItemVo.class); |
170 |
2
|
interface2ConcreteClass.put(LiteratureItemList.class, LiteratureItemListVo.class); |
171 |
2
|
interface2ConcreteClass.put(Location.class, LocationVo.class); |
172 |
2
|
interface2ConcreteClass.put(LocationList.class, LocationListVo.class); |
173 |
2
|
interface2ConcreteClass.put(Node.class, NodeVo.class); |
174 |
2
|
interface2ConcreteClass.put(Proof.class, ProofVo.class); |
175 |
2
|
interface2ConcreteClass.put(ProofList.class, ProofListVo.class); |
176 |
2
|
interface2ConcreteClass.put(Proposition.class, PropositionVo.class); |
177 |
2
|
interface2ConcreteClass.put(Qedeq.class, QedeqVo.class); |
178 |
2
|
interface2ConcreteClass.put(Rename.class, RenameVo.class); |
179 |
2
|
interface2ConcreteClass.put(Rule.class, RuleVo.class); |
180 |
2
|
interface2ConcreteClass.put(Section.class, SectionVo.class); |
181 |
2
|
interface2ConcreteClass.put(SectionList.class, SectionListVo.class); |
182 |
2
|
interface2ConcreteClass.put(Specification.class, SpecificationVo.class); |
183 |
2
|
interface2ConcreteClass.put(Subsection.class, SubsectionVo.class); |
184 |
2
|
interface2ConcreteClass.put(SubsectionList.class, SubsectionListVo.class); |
185 |
2
|
interface2ConcreteClass.put(SubstFree.class, SubstFreeVo.class); |
186 |
2
|
interface2ConcreteClass.put(SubstFunc.class, SubstFuncVo.class); |
187 |
2
|
interface2ConcreteClass.put(SubstPred.class, SubstPredVo.class); |
188 |
2
|
interface2ConcreteClass.put(Term.class, TermVo.class); |
189 |
2
|
interface2ConcreteClass.put(Universal.class, UniversalVo.class); |
190 |
2
|
interface2ConcreteClass.put(UsedByList.class, UsedByListVo.class); |
191 |
|
} |
192 |
|
|
193 |
|
private int intCounter; |
194 |
|
|
195 |
|
private int stringCounter; |
196 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
197 |
1
|
public QedeqVoCreator() {... |
198 |
|
} |
199 |
|
|
200 |
|
|
|
|
| 97.9% |
Uncovered Elements: 1 (47) |
Complexity: 9 |
Complexity Density: 0.27 |
|
201 |
116
|
private List abstractToConcreteClass(final Class clazz) {... |
202 |
116
|
List result = new ArrayList(); |
203 |
116
|
if (!Modifier.isAbstract(clazz.getModifiers()) && !clazz.isInterface()) { |
204 |
82
|
result.add(clazz); |
205 |
|
} else { |
206 |
34
|
Object concreteClass = interface2ConcreteClass.get(clazz); |
207 |
34
|
if (concreteClass == null) { |
208 |
23
|
if (clazz == Element.class) { |
209 |
19
|
result.add(DefaultAtom.class); |
210 |
19
|
result.add(DefaultElementList.class); |
211 |
4
|
} else if (clazz == NodeType.class) { |
212 |
1
|
result.add(PredicateDefinitionVo.class); |
213 |
1
|
result.add(InitialPredicateDefinitionVo.class); |
214 |
1
|
result.add(FunctionDefinitionVo.class); |
215 |
1
|
result.add(InitialFunctionDefinitionVo.class); |
216 |
1
|
result.add(RuleVo.class); |
217 |
1
|
result.add(PropositionVo.class); |
218 |
1
|
result.add(AxiomVo.class); |
219 |
3
|
} else if (clazz == SubsectionType.class) { |
220 |
1
|
result.add(NodeVo.class); |
221 |
1
|
result.add(SubsectionVo.class); |
222 |
2
|
} else if (clazz == FormalProofLine.class) { |
223 |
1
|
result.add(FormalProofLineVo.class); |
224 |
1
|
result.add(ConditionalProofVo.class); |
225 |
1
|
} else if (clazz == Reason.class) { |
226 |
1
|
result.add(ModusPonensVo.class); |
227 |
1
|
result.add(SubstFreeVo.class); |
228 |
1
|
result.add(SubstPredVo.class); |
229 |
1
|
result.add(RenameVo.class); |
230 |
1
|
result.add(AddVo.class); |
231 |
1
|
result.add(ExistentialVo.class); |
232 |
1
|
result.add(UniversalVo.class); |
233 |
1
|
result.add(SubstFuncVo.class); |
234 |
|
} |
235 |
|
} else { |
236 |
11
|
result.add(concreteClass); |
237 |
|
} |
238 |
|
} |
239 |
116
|
return result; |
240 |
|
} |
241 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
242 |
1
|
public List create(){... |
243 |
1
|
return createValuesFor(Qedeq.class); |
244 |
|
} |
245 |
|
|
|
|
| 0% |
Uncovered Elements: 5 (5) |
Complexity: 2 |
Complexity Density: 0.67 |
|
246 |
0
|
public static void main(final String[] args) {... |
247 |
0
|
final QedeqVoCreator c = new QedeqVoCreator(); |
248 |
0
|
final List vos = c.create(); |
249 |
0
|
for (int i = 0; i < vos.size(); i++) { |
250 |
|
|
251 |
|
|
252 |
|
} |
253 |
|
} |
254 |
|
|
255 |
|
public TextOutput out = new TextOutput("out", new PrintStream(System.out)); |
256 |
|
|
257 |
|
|
258 |
|
|
259 |
|
|
260 |
|
@param |
261 |
|
@return |
262 |
|
|
|
|
| 75.8% |
Uncovered Elements: 23 (95) |
Complexity: 22 |
Complexity Density: 0.37 |
|
263 |
222
|
public List createValuesFor(Class clazz) { ... |
264 |
|
|
265 |
|
|
266 |
222
|
final List result = new ArrayList(); |
267 |
|
|
268 |
222
|
Object vo = null; |
269 |
222
|
if (clazz.isPrimitive()) { |
270 |
1
|
if (clazz == Integer.TYPE) { |
271 |
1
|
vo = new Integer(++intCounter); |
272 |
|
} else { |
273 |
0
|
throw new RuntimeException("not yet supported: " + clazz); |
274 |
|
} |
275 |
221
|
} else if (clazz.equals(Integer.class)) { |
276 |
0
|
vo = new Integer(++intCounter); |
277 |
221
|
} else if (clazz.equals(String.class)) { |
278 |
103
|
vo = "s" + (++stringCounter); |
279 |
118
|
} else if (clazz.equals(Boolean.class)) { |
280 |
2
|
result.add(Boolean.FALSE); |
281 |
2
|
vo = Boolean.TRUE; |
282 |
116
|
} else if (clazz.equals(List.class)) { |
283 |
0
|
vo = new ArrayList(); |
284 |
|
} else { |
285 |
116
|
List clazzes = abstractToConcreteClass(clazz); |
286 |
116
|
if (clazzes.size() == 0) { |
287 |
0
|
throw new RuntimeException("not yet supported: " + clazz); |
288 |
|
} |
289 |
266
|
for (int k = 0; k < clazzes.size(); k++) { |
290 |
150
|
final Class clazz2 = (Class) clazzes.get(k); |
291 |
150
|
vo = getEmptyObject(clazz2); |
292 |
150
|
result.add(vo); |
293 |
150
|
Method[] methods = clazz2.getDeclaredMethods(); |
294 |
1612
|
for (int i = 0; i < methods.length; i++) { |
295 |
1462
|
if (methods[i].getName().startsWith("set")) { |
296 |
181
|
final Method setter = methods[i]; |
297 |
181
|
if (setter.getParameterTypes().length > 1) { |
298 |
0
|
fail("setter with more than one parameter found: " + setter.getName()); |
299 |
0
|
continue; |
300 |
|
} |
301 |
181
|
if (clazz2 == ConditionalProofVo.class |
302 |
|
&& "setFormalProofLineList".equals(setter.getName())) { |
303 |
1
|
continue; |
304 |
|
} |
305 |
180
|
final Class setClazz = setter.getParameterTypes()[0]; |
306 |
180
|
final List values = createValuesFor(setClazz); |
307 |
937
|
for (int j = 0; j < values.size(); j++) { |
308 |
|
|
309 |
757
|
vo = getEmptyObject(clazz2); |
310 |
757
|
try { |
311 |
757
|
setter.invoke(vo, new Object[] {values.get(j)}); |
312 |
|
} catch (Exception e) { |
313 |
0
|
e.printStackTrace(System.out); |
314 |
0
|
throw new RuntimeException(e); |
315 |
|
} |
316 |
757
|
result.add(vo); |
317 |
|
} |
318 |
1281
|
} else if (methods[i].getName().equals("add")) { |
319 |
60
|
final Method adder = methods[i]; |
320 |
60
|
if (adder.getParameterTypes().length > 1) { |
321 |
0
|
final StringBuffer buffer = new StringBuffer("in class \"" + clazz |
322 |
|
+ "\" method \"add\" with more than one parameter found: " |
323 |
|
+ adder.getName()); |
324 |
0
|
for (int j = 0; j < adder.getParameterTypes().length; j++) { |
325 |
0
|
buffer.append(" " + adder.getParameterTypes()[j]); |
326 |
|
} |
327 |
0
|
fail(buffer.toString()); |
328 |
0
|
continue; |
329 |
|
} |
330 |
60
|
final Class setClazz = adder.getParameterTypes()[0]; |
331 |
60
|
if (setClazz != clazz) { |
332 |
41
|
final List values = createValuesFor(setClazz); |
333 |
535
|
for (int j = 0; j < values.size(); j++) { |
334 |
|
|
335 |
494
|
vo = getEmptyObject(clazz2); |
336 |
494
|
try { |
337 |
494
|
adder.invoke(vo, new Object[] {values.get(j)}); |
338 |
|
} catch (Exception e) { |
339 |
0
|
e.printStackTrace(System.out); |
340 |
0
|
throw new RuntimeException(e); |
341 |
|
} |
342 |
494
|
result.add(vo); |
343 |
|
} |
344 |
|
} |
345 |
|
} |
346 |
|
} |
347 |
|
} |
348 |
|
} |
349 |
|
|
350 |
|
|
351 |
222
|
return result; |
352 |
|
} |
353 |
|
|
354 |
|
|
355 |
|
|
356 |
|
|
357 |
|
|
358 |
|
|
359 |
|
@param |
360 |
|
@param |
361 |
|
@param |
362 |
|
@return |
363 |
|
|
364 |
|
@throws@link |
365 |
|
|
366 |
|
|
|
|
| 84% |
Uncovered Elements: 4 (25) |
Complexity: 7 |
Complexity Density: 0.47 |
|
367 |
1401
|
private Object getEmptyObject(Class clazz) {... |
368 |
|
|
369 |
1401
|
if (clazz.equals(DefaultAtom.class)) { |
370 |
19
|
return new DefaultAtom("s" + (++stringCounter)); |
371 |
|
} |
372 |
1382
|
if (clazz.equals(DefaultElementList.class)) { |
373 |
19
|
return new DefaultElementList("s" + (++stringCounter)); |
374 |
|
} |
375 |
1363
|
Constructor[] constructors = clazz.getConstructors(); |
376 |
1363
|
Constructor constructor = null; |
377 |
2955
|
for (int j = 0; j < constructors.length; j++) { |
378 |
1592
|
if (constructors[j].getParameterTypes().length == 0) { |
379 |
1363
|
constructor = constructors[j]; |
380 |
|
} |
381 |
|
} |
382 |
1363
|
if (constructor == null) { |
383 |
0
|
throw new RuntimeException("no constructor found for clazz: " + clazz.getName()); |
384 |
|
} |
385 |
1363
|
try { |
386 |
1363
|
return constructor.newInstance(new Object[0]); |
387 |
|
} catch (final Exception e) { |
388 |
0
|
System.out.println(constructor); |
389 |
0
|
throw new RuntimeException(e); |
390 |
|
} |
391 |
|
} |
392 |
|
|
393 |
|
|
394 |
|
|
395 |
|
|
396 |
|
@param |
397 |
|
@return |
398 |
|
|
|
|
| 0% |
Uncovered Elements: 5 (5) |
Complexity: 2 |
Complexity Density: 0.67 |
|
399 |
0
|
public static final String getUName(final String name) {... |
400 |
0
|
if (name.length() > 0) { |
401 |
0
|
return name.substring(0, 1).toUpperCase() + name.substring(1); |
402 |
|
} |
403 |
0
|
return ""; |
404 |
|
} |
405 |
|
|
|
|
| 0% |
Uncovered Elements: 1 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
406 |
0
|
public void fail(final String message) {... |
407 |
0
|
throw new RuntimeException(message); |
408 |
|
} |
409 |
|
|
410 |
|
|
411 |
|
} |