1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 package test.codemaker.javamaker;
25 
26 import com.sun.star.comp.helper.Bootstrap;
27 import com.sun.star.lang.XEventListener;
28 import com.sun.star.uno.Any;
29 import com.sun.star.uno.DeploymentException;
30 import com.sun.star.uno.Type;
31 import com.sun.star.uno.XComponentContext;
32 import com.sun.star.uno.XNamingService;
33 import java.util.EventListener;
34 import org.junit.Before;
35 import org.junit.Test;
36 import test.codemaker.javamaker.Enum1;
37 import test.codemaker.javamaker.Enum2;
38 import test.codemaker.javamaker.PolyStruct;
39 import test.codemaker.javamaker.S2;
40 import test.codemaker.javamaker.Struct2;
41 import test.codemaker.javamaker.services.service_abstract;
42 import test.codemaker.javamaker.services.service_assert;
43 import test.codemaker.javamaker.services.service_break;
44 import test.codemaker.javamaker.services.service_catch;
45 import test.codemaker.javamaker.services.service_class;
46 import test.codemaker.javamaker.services.service_continue;
47 import test.codemaker.javamaker.services.service_do;
48 import test.codemaker.javamaker.services.service_else;
49 import test.codemaker.javamaker.services.service_extends;
50 import test.codemaker.javamaker.services.service_final;
51 import test.codemaker.javamaker.services.service_finally;
52 import test.codemaker.javamaker.services.service_for;
53 import test.codemaker.javamaker.services.service_goto;
54 import test.codemaker.javamaker.services.service_if;
55 import test.codemaker.javamaker.services.service_implements;
56 import test.codemaker.javamaker.services.service_import;
57 import test.codemaker.javamaker.services.service_instanceof;
58 import test.codemaker.javamaker.services.service_int;
59 import test.codemaker.javamaker.services.service_native;
60 import test.codemaker.javamaker.services.service_new;
61 import test.codemaker.javamaker.services.service_package;
62 import test.codemaker.javamaker.services.service_private;
63 import test.codemaker.javamaker.services.service_protected;
64 import test.codemaker.javamaker.services.service_public;
65 import test.codemaker.javamaker.services.service_return;
66 import test.codemaker.javamaker.services.service_static;
67 import test.codemaker.javamaker.services.service_strictfp;
68 import test.codemaker.javamaker.services.service_super;
69 import test.codemaker.javamaker.services.service_synchronized;
70 import test.codemaker.javamaker.services.service_this;
71 import test.codemaker.javamaker.services.service_throw;
72 import test.codemaker.javamaker.services.service_throws;
73 import test.codemaker.javamaker.services.service_try;
74 import test.codemaker.javamaker.services.service_volatile;
75 import test.codemaker.javamaker.services.service_while;
76 import test.codemaker.javamaker.singleton_abstract;
77 
78 import static org.junit.Assert.*;
79 
80 public final class Javamaker_Test {
81     @Before
before()82     public void before() throws Exception {
83         context = Bootstrap.createInitialComponentContext(null);
84     }
85 
86     @Test
testEnum1()87     public void testEnum1() {
88         assertTrue(Enum1.VALUE1.getValue() == -100);
89         assertTrue(Enum1.VALUE2.getValue() == 100);
90         assertTrue(Enum1.VALUE1_value == -100);
91         assertTrue(Enum1.VALUE2_value == 100);
92         assertTrue(Enum1.getDefault() == Enum1.VALUE1);
93         assertTrue(Enum1.fromInt(-101) == null);
94         assertTrue(Enum1.fromInt(-100) == Enum1.VALUE1);
95         assertTrue(Enum1.fromInt(-99) == null);
96         assertTrue(Enum1.fromInt(0) == null);
97         assertTrue(Enum1.fromInt(99) == null);
98         assertTrue(Enum1.fromInt(100) == Enum1.VALUE2);
99         assertTrue(Enum1.fromInt(101) == null);
100     }
101 
102     @Test
testEnum2()103     public void testEnum2() {
104         assertTrue(Enum2.VALUE0.getValue() == 0);
105         assertTrue(Enum2.VALUE1.getValue() == 1);
106         assertTrue(Enum2.VALUE2.getValue() == 2);
107         assertTrue(Enum2.VALUE4.getValue() == 4);
108         assertTrue(Enum2.VALUE0_value == 0);
109         assertTrue(Enum2.VALUE1_value == 1);
110         assertTrue(Enum2.VALUE2_value == 2);
111         assertTrue(Enum2.VALUE4_value == 4);
112         assertTrue(Enum2.getDefault() == Enum2.VALUE0);
113         assertTrue(Enum2.fromInt(-1) == null);
114         assertTrue(Enum2.fromInt(0) == Enum2.VALUE0);
115         assertTrue(Enum2.fromInt(1) == Enum2.VALUE1);
116         assertTrue(Enum2.fromInt(2) == Enum2.VALUE2);
117         assertTrue(Enum2.fromInt(3) == null);
118         assertTrue(Enum2.fromInt(4) == Enum2.VALUE4);
119         assertTrue(Enum2.fromInt(5) == null);
120     }
121 
122     @Test
testPolyStruct()123     public void testPolyStruct() {
124         PolyStruct s = new PolyStruct();
125         assertTrue(s.member1 == null);
126         assertTrue(s.member2 == 0);
127         s = new PolyStruct("ABC", 5);
128         assertTrue(s.member1.equals("ABC"));
129         assertTrue(s.member2 == 5);
130     }
131 
132     @Test
testEmptyStruct2()133     public void testEmptyStruct2() {
134         Struct2 s = new Struct2();
135         assertTrue(s.p1 == false);
136         assertTrue(s.p2 == 0);
137         assertTrue(s.p3 == 0);
138         assertTrue(s.p4 == 0);
139         assertTrue(s.p5 == 0);
140         assertTrue(s.p6 == 0);
141         assertTrue(s.p7 == 0L);
142         assertTrue(s.p8 == 0L);
143         assertTrue(s.p9 == 0.0f);
144         assertTrue(s.p10 == 0.0);
145         assertTrue(s.p11 == '\u0000');
146         assertTrue(s.p12.equals(""));
147         assertTrue(s.p13.equals(Type.VOID));
148         assertTrue(s.p14.equals(Any.VOID));
149         assertTrue(s.p15 == Enum2.VALUE0);
150         assertTrue(s.p16.member1 == 0);
151         assertTrue(s.p17 == null);
152         assertTrue(s.p18 == null);
153         assertTrue(s.t1 == false);
154         assertTrue(s.t2 == 0);
155         assertTrue(s.t3 == 0);
156         assertTrue(s.t4 == 0);
157         assertTrue(s.t5 == 0);
158         assertTrue(s.t6 == 0);
159         assertTrue(s.t7 == 0L);
160         assertTrue(s.t8 == 0L);
161         assertTrue(s.t9 == 0.0f);
162         assertTrue(s.t10 == 0.0);
163         assertTrue(s.t11 == '\u0000');
164         assertTrue(s.t12.equals(""));
165         assertTrue(s.t13.equals(Type.VOID));
166         assertTrue(s.t14.equals(Any.VOID));
167         assertTrue(s.t15 == Enum2.VALUE0);
168         assertTrue(s.t16.member1 == 0);
169         assertTrue(s.t17 == null);
170         assertTrue(s.t18 == null);
171         assertTrue(s.a1.length == 0);
172         assertTrue(s.a2.length == 0);
173         assertTrue(s.a3.length == 0);
174         assertTrue(s.a4.length == 0);
175         assertTrue(s.a5.length == 0);
176         assertTrue(s.a6.length == 0);
177         assertTrue(s.a7.length == 0);
178         assertTrue(s.a8.length == 0);
179         assertTrue(s.a9.length == 0);
180         assertTrue(s.a10.length == 0);
181         assertTrue(s.a11.length == 0);
182         assertTrue(s.a12.length == 0);
183         assertTrue(s.a13.length == 0);
184         assertTrue(s.a14.length == 0);
185         assertTrue(s.a15.length == 0);
186         assertTrue(s.a16.length == 0);
187         assertTrue(s.a17.length == 0);
188         assertTrue(s.a18.length == 0);
189         assertTrue(s.aa1.length == 0);
190         assertTrue(s.aa2.length == 0);
191         assertTrue(s.aa3.length == 0);
192         assertTrue(s.aa4.length == 0);
193         assertTrue(s.aa5.length == 0);
194         assertTrue(s.aa6.length == 0);
195         assertTrue(s.aa7.length == 0);
196         assertTrue(s.aa8.length == 0);
197         assertTrue(s.aa9.length == 0);
198         assertTrue(s.aa10.length == 0);
199         assertTrue(s.aa11.length == 0);
200         assertTrue(s.aa12.length == 0);
201         assertTrue(s.aa13.length == 0);
202         assertTrue(s.aa14.length == 0);
203         assertTrue(s.aa15.length == 0);
204         assertTrue(s.aa16.length == 0);
205         assertTrue(s.aa17.length == 0);
206         assertTrue(s.aa18.length == 0);
207         assertTrue(s.at1.length == 0);
208         assertTrue(s.at2.length == 0);
209         assertTrue(s.at3.length == 0);
210         assertTrue(s.at4.length == 0);
211         assertTrue(s.at5.length == 0);
212         assertTrue(s.at6.length == 0);
213         assertTrue(s.at7.length == 0);
214         assertTrue(s.at8.length == 0);
215         assertTrue(s.at9.length == 0);
216         assertTrue(s.at10.length == 0);
217         assertTrue(s.at11.length == 0);
218         assertTrue(s.at12.length == 0);
219         assertTrue(s.at13.length == 0);
220         assertTrue(s.at14.length == 0);
221         assertTrue(s.at15.length == 0);
222         assertTrue(s.at16.length == 0);
223         assertTrue(s.at17.length == 0);
224         assertTrue(s.at18.length == 0);
225     }
226 
227     @Test
testFullStruct2()228     public void testFullStruct2() {
229         //TODO:
230         Struct2 s = new Struct2(
231             true, (byte) 1, (short) 2, (short) 3, 4, 5, 6L, 7L, 0.8f, 0.9, 'A',
232             "BCD", Type.UNSIGNED_HYPER, new Integer(22), Enum2.VALUE4,
233             new Struct1(1), null, null, false, (byte) 0, (short) 0, (short) 0,
234             0, 0, 0L, 0L, 0.0f, 0.0, '\u0000', "", Type.VOID, Any.VOID,
235             Enum2.VALUE0, new Struct1(), null, null,
236             new boolean[] { false, true }, new byte[] { (byte) 1, (byte) 2 },
237             new short[0], new short[0], new int[0], new int[0],
238             new long[0], new long[0], new float[0], new double[0], new char[0],
239             new String[0], new Type[0], new Object[0], new Enum2[0],
240             new Struct1[] { new Struct1(1), new Struct1(2) }, new Object[0],
241             new XNamingService[0], new boolean[0][], new byte[0][],
242             new short[0][], new short[0][], new int[0][], new int[0][],
243             new long[0][], new long[0][], new float[0][], new double[0][],
244             new char[0][], new String[0][], new Type[0][], new Object[0][],
245             new Enum2[0][], new Struct1[0][], new Object[0][],
246             new XNamingService[0][], new boolean[0][], new byte[0][],
247             new short[0][], new short[0][], new int[0][], new int[0][],
248             new long[0][], new long[0][], new float[0][], new double[0][],
249             new char[0][], new String[0][], new Type[0][], new Object[0][],
250             new Enum2[0][], new Struct1[0][], new Object[0][],
251             new XNamingService[0][]);
252         assertTrue(s.p1 == true);
253         assertTrue(s.p2 == 1);
254         assertTrue(s.p3 == 2);
255         assertTrue(s.p4 == 3);
256         assertTrue(s.p5 == 4);
257         assertTrue(s.p6 == 5);
258         assertTrue(s.p7 == 6L);
259         assertTrue(s.p8 == 7L);
260         assertTrue(s.p9 == 0.8f);
261         assertTrue(s.p10 == 0.9);
262         assertTrue(s.p11 == 'A');
263         assertTrue(s.p12.equals("BCD"));
264         assertTrue(s.p13.equals(Type.UNSIGNED_HYPER));
265         assertTrue(s.p14.equals(new Integer(22)));
266         assertTrue(s.p15 == Enum2.VALUE4);
267         assertTrue(s.p16.member1 == 1);
268         assertTrue(s.p17 == null);
269         assertTrue(s.p18 == null);
270         assertTrue(s.t1 == false);
271         assertTrue(s.t2 == 0);
272         assertTrue(s.t3 == 0);
273         assertTrue(s.t4 == 0);
274         assertTrue(s.t5 == 0);
275         assertTrue(s.t6 == 0);
276         assertTrue(s.t7 == 0L);
277         assertTrue(s.t8 == 0L);
278         assertTrue(s.t9 == 0.0f);
279         assertTrue(s.t10 == 0.0);
280         assertTrue(s.t11 == '\u0000');
281         assertTrue(s.t12.equals(""));
282         assertTrue(s.t13.equals(Type.VOID));
283         assertTrue(s.t14.equals(Any.VOID));
284         assertTrue(s.t15 == Enum2.VALUE0);
285         assertTrue(s.t16.member1 == 0);
286         assertTrue(s.t17 == null);
287         assertTrue(s.t18 == null);
288         assertTrue(s.a1.length == 2);
289         assertTrue(s.a1[0] == false);
290         assertTrue(s.a1[1] == true);
291         assertTrue(s.a2.length == 2);
292         assertTrue(s.a2[0] == 1);
293         assertTrue(s.a2[1] == 2);
294         assertTrue(s.a3.length == 0);
295         assertTrue(s.a4.length == 0);
296         assertTrue(s.a5.length == 0);
297         assertTrue(s.a6.length == 0);
298         assertTrue(s.a7.length == 0);
299         assertTrue(s.a8.length == 0);
300         assertTrue(s.a9.length == 0);
301         assertTrue(s.a10.length == 0);
302         assertTrue(s.a11.length == 0);
303         assertTrue(s.a12.length == 0);
304         assertTrue(s.a13.length == 0);
305         assertTrue(s.a14.length == 0);
306         assertTrue(s.a15.length == 0);
307         assertTrue(s.a16.length == 2);
308         assertTrue(s.a16[0].member1 == 1);
309         assertTrue(s.a16[1].member1 == 2);
310         assertTrue(s.a17.length == 0);
311         assertTrue(s.a18.length == 0);
312         assertTrue(s.aa1.length == 0);
313         assertTrue(s.aa2.length == 0);
314         assertTrue(s.aa3.length == 0);
315         assertTrue(s.aa4.length == 0);
316         assertTrue(s.aa5.length == 0);
317         assertTrue(s.aa6.length == 0);
318         assertTrue(s.aa7.length == 0);
319         assertTrue(s.aa8.length == 0);
320         assertTrue(s.aa9.length == 0);
321         assertTrue(s.aa10.length == 0);
322         assertTrue(s.aa11.length == 0);
323         assertTrue(s.aa12.length == 0);
324         assertTrue(s.aa13.length == 0);
325         assertTrue(s.aa14.length == 0);
326         assertTrue(s.aa15.length == 0);
327         assertTrue(s.aa16.length == 0);
328         assertTrue(s.aa17.length == 0);
329         assertTrue(s.aa18.length == 0);
330         assertTrue(s.at1.length == 0);
331         assertTrue(s.at2.length == 0);
332         assertTrue(s.at3.length == 0);
333         assertTrue(s.at4.length == 0);
334         assertTrue(s.at5.length == 0);
335         assertTrue(s.at6.length == 0);
336         assertTrue(s.at7.length == 0);
337         assertTrue(s.at8.length == 0);
338         assertTrue(s.at9.length == 0);
339         assertTrue(s.at10.length == 0);
340         assertTrue(s.at11.length == 0);
341         assertTrue(s.at12.length == 0);
342         assertTrue(s.at13.length == 0);
343         assertTrue(s.at14.length == 0);
344         assertTrue(s.at15.length == 0);
345         assertTrue(s.at16.length == 0);
346         assertTrue(s.at17.length == 0);
347         assertTrue(s.at18.length == 0);
348     }
349 
350     @Test
testXEventListener()351     public void testXEventListener() {
352         assertTrue(EventListener.class.isAssignableFrom(XEventListener.class));
353     }
354 
355     @Test
testS1()356     public void testS1() throws com.sun.star.uno.Exception {
357         //TODO:
358         try {
359             S1.create1(context);
360             fail("S1.create1");
361         } catch (DeploymentException e) {}
362         try {
363             S1.create2(context, new Any[0]);
364             fail("S1.create2");
365         } catch (com.sun.star.uno.Exception e) {}
366         try {
367             S1.create3(context, new Any[0]);
368             fail("S1.create3");
369         } catch (DeploymentException e) {}
370         try {
371             S1.create4(context, 0, 0, 0);
372             fail("S1.create4");
373         } catch (DeploymentException e) {}
374         try {
375             S1.create5(
376                 context, false, (byte) 0, (short) 0, (short) 0, 0, 0, 0L, 0L,
377                 0.0f, 0.0, '\u0000', "", Type.VOID, Any.VOID, Enum2.VALUE0,
378                 new Struct1(), null, null, false, (byte) 0, (short) 0,
379                 (short) 0, 0, 0, 0L, 0L, 0.0f, 0.0, '\u0000', "", Type.VOID,
380                 Any.VOID, Enum2.VALUE0, new Struct1(), null, null,
381                 new boolean[0], new byte[0], new short[0], new short[0],
382                 new int[0], new int[0], new long[0], new long[0], new float[0],
383                 new double[0], new char[0], new String[0], new Type[0],
384                 new Object[0], new Enum2[0], new Struct1[0], new Object[0],
385                 new XNamingService[0], new boolean[0][], new byte[0][],
386                 new short[0][], new short[0][], new int[0][], new int[0][],
387                 new long[0][], new long[0][], new float[0][], new double[0][],
388                 new char[0][], new String[0][], new Type[0][], new Object[0][],
389                 new Enum2[0][], new Struct1[0][], new Object[0][],
390                 new XNamingService[0][], new boolean[0][], new byte[0][],
391                 new short[0][], new short[0][], new int[0][], new int[0][],
392                 new long[0][], new long[0][], new float[0][], new double[0][],
393                 new char[0][], new String[0][], new Type[0][], new Object[0][],
394                 new Enum2[0][], new Struct1[0][], new Object[0][],
395                 new XNamingService[0][]);
396             fail("S1.create4");
397         } catch (DeploymentException e) {}
398     }
399 
400     @Test
testS2()401     public void testS2() {
402         //TODO
403     }
404 
405     @Test
testKeywordServices()406     public void testKeywordServices() {
407         try {
408             service_abstract.method_abstract(context, 0);
409             fail("service_abstract.method_abstract");
410         } catch (DeploymentException e) {}
411         try {
412             service_assert.method_assert(context, 0);
413             fail("service_assert.method_assert");
414         } catch (DeploymentException e) {}
415         try {
416             service_break.method_break(context, 0);
417             fail("service_break.method_break");
418         } catch (DeploymentException e) {}
419         try {
420             service_catch.method_catch(context, 0);
421             fail("service_catch.method_catch");
422         } catch (DeploymentException e) {}
423         try {
424             service_class.method_class(context, 0);
425             fail("service_class.method_class");
426         } catch (DeploymentException e) {}
427         try {
428             service_continue.method_continue(context, 0);
429             fail("service_continue.method_continue");
430         } catch (DeploymentException e) {}
431         try {
432             service_do.method_do(context, 0);
433             fail("service_do.method_do");
434         } catch (DeploymentException e) {}
435         try {
436             service_else.method_else(context, 0);
437             fail("service_else.method_else");
438         } catch (DeploymentException e) {}
439         try {
440             service_extends.method_extends(context, 0);
441             fail("service_extends.method_extends");
442         } catch (DeploymentException e) {}
443         try {
444             service_final.method_final(context, 0);
445             fail("service_final.method_final");
446         } catch (DeploymentException e) {}
447         try {
448             service_finally.method_finally(context, 0);
449             fail("service_finally.method_finally");
450         } catch (DeploymentException e) {}
451         try {
452             service_for.method_for(context, 0);
453             fail("service_for.method_for");
454         } catch (DeploymentException e) {}
455         try {
456             service_goto.method_goto(context, 0);
457             fail("service_goto.method_goto");
458         } catch (DeploymentException e) {}
459         try {
460             service_if.method_if(context, 0);
461             fail("service_if.method_if");
462         } catch (DeploymentException e) {}
463         try {
464             service_implements.method_implements(context, 0);
465             fail("service_implements.method_implements");
466         } catch (DeploymentException e) {}
467         try {
468             service_import.method_import(context, 0);
469             fail("service_import.method_import");
470         } catch (DeploymentException e) {}
471         try {
472             service_instanceof.method_instanceof(context, 0);
473             fail("service_instanceof.method_instanceof");
474         } catch (DeploymentException e) {}
475         try {
476             service_int.method_int(context, 0);
477             fail("service_int.method_int");
478         } catch (DeploymentException e) {}
479         try {
480             service_native.method_native(context, 0);
481             fail("service_native.method_native");
482         } catch (DeploymentException e) {}
483         try {
484             service_new.method_new(context, 0);
485             fail("service_new.method_new");
486         } catch (DeploymentException e) {}
487         try {
488             service_package.method_package(context, 0);
489             fail("service_package.method_package");
490         } catch (DeploymentException e) {}
491         try {
492             service_private.method_private(context, 0);
493             fail("service_private.method_private");
494         } catch (DeploymentException e) {}
495         try {
496             service_protected.method_protected(context, 0);
497             fail("service_protected.method_protected");
498         } catch (DeploymentException e) {}
499         try {
500             service_public.method_public(context, 0);
501             fail("service_public.method_public");
502         } catch (DeploymentException e) {}
503         try {
504             service_return.method_return(context, 0);
505             fail("service_return.method_return");
506         } catch (DeploymentException e) {}
507         try {
508             service_static.method_static(context, 0);
509             fail("service_static.method_static");
510         } catch (DeploymentException e) {}
511         try {
512             service_strictfp.method_strictfp(context, 0);
513             fail("service_strictfp.method_strictfp");
514         } catch (DeploymentException e) {}
515         try {
516             service_super.method_super(context, 0);
517             fail("service_super.method_super");
518         } catch (DeploymentException e) {}
519         try {
520             service_synchronized.method_synchronized(context, 0);
521             fail("service_synchronized.method_synchronized");
522         } catch (DeploymentException e) {}
523         try {
524             service_this.method_this(context, 0);
525             fail("service_this.method_this");
526         } catch (DeploymentException e) {}
527         try {
528             service_throw.method_throw(context, 0);
529             fail("service_throw.method_throw");
530         } catch (DeploymentException e) {}
531         try {
532             service_throws.method_throws(context, 0);
533             fail("service_throws.method_throws");
534         } catch (DeploymentException e) {}
535         try {
536             service_try.method_try(context, 0);
537             fail("service_try.method_try");
538         } catch (DeploymentException e) {}
539         try {
540             service_volatile.method_volatile(context, 0);
541             fail("service_volatile.method_volatile");
542         } catch (DeploymentException e) {}
543         try {
544             service_while.method_while(context, 0);
545             fail("service_while.method_while");
546         } catch (DeploymentException e) {}
547     }
548 
549     @Test
testSingletons()550     public void testSingletons() {
551         try {
552             S4.get(context);
553             fail("S4");
554         } catch (DeploymentException e) {}
555         try {
556             singleton_abstract.get(context);
557             fail("singleton_abstract");
558         } catch (DeploymentException e) {}
559     }
560 
561     private XComponentContext context;
562 }
563