1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 package test.java_uno.equals;
29 
30 import com.sun.star.bridge.XBridge;
31 import com.sun.star.bridge.XBridgeFactory;
32 import com.sun.star.bridge.XInstanceProvider;
33 import com.sun.star.comp.helper.Bootstrap;
34 import com.sun.star.connection.Acceptor;
35 import com.sun.star.connection.XAcceptor;
36 import com.sun.star.connection.XConnection;
37 import com.sun.star.lang.XMultiComponentFactory;
38 import com.sun.star.lang.XSingleComponentFactory;
39 import com.sun.star.lib.TestBed;
40 import com.sun.star.lib.uno.typeinfo.MethodTypeInfo;
41 import com.sun.star.lib.uno.typeinfo.TypeInfo;
42 import com.sun.star.loader.XImplementationLoader;
43 import com.sun.star.uno.UnoRuntime;
44 import com.sun.star.uno.XComponentContext;
45 import com.sun.star.uno.XInterface;
46 import java.io.File;
47 import java.net.MalformedURLException;
48 import java.util.HashMap;
49 import java.util.Hashtable;
50 
51 // In this test scenario, the Java server (see implementation of method
52 // notifyAccepting) has a remote bridge to the Java client and a local JNI
53 // bridge to a C++ com.sun.star.test.bridges.testequals.impl service.  The C++
54 // service and the Java client are also connected via a remote bridge.
55 //
56 // The Java server gets two objects (INSTANCE1, INSTANCE2), once directly from
57 // the Java client via the remote bridge (proxies test1A, test2A), and once
58 // through the C++ service via the JNI bridge (proxies test1B, test2B).
59 // Exhaustive tests on the proxies' equals and hashCode methods are done.
60 
61 public final class TestEquals {
62     // args[0] must be a file system path to a types.rdb,
63     // args[1] must be a file system path to a services.rdb
64     public static void main(String[] args) throws Exception {
65         TestBed t = new TestBed();
66         boolean success = t.execute(
67             new Provider(t, toFileUrl(args[0]), toFileUrl(args[1])), true,
68             Client.class, 0);
69         System.out.println("success? " + success);
70         System.exit(success ? 0 : 1);
71     }
72 
73     private static String toFileUrl(String path) throws MalformedURLException {
74         String url = new File(path).toURL().toString();
75         String prefix = "file:/";
76         if (url.startsWith(prefix)
77             && (url.length() == prefix.length()
78                 || url.charAt(prefix.length()) != '/')) {
79             url = url.substring(0, prefix.length()) + "//"
80                 + url.substring(prefix.length());
81         }
82         return url;
83     }
84 
85     public static final class Client extends TestBed.Client {
86         public static void main(String[] args) {
87             new Client().execute();
88         }
89 
90         protected boolean run(XComponentContext context) throws Throwable {
91             XTestFrame f = UnoRuntime.queryInterface(
92                 XTestFrame.class, getBridge(context).getInstance("TestFrame"));
93             XAcceptor acceptor = Acceptor.create(context);
94             XBridgeFactory factory = UnoRuntime.queryInterface(
95                 XBridgeFactory.class,
96                 context.getServiceManager().createInstanceWithContext(
97                     "com.sun.star.bridge.BridgeFactory", context));
98             System.out.println("Client, 2nd connection: Accepting...");
99             XInstanceProvider prov = new Provider();
100             f.notifyAccepting(new Done(), prov.getInstance(INSTANCE1),
101                               prov.getInstance(INSTANCE2));
102             XConnection connection = acceptor.accept(CONNECTION_DESCRIPTION);
103             System.out.println("Client, 2nd connection: ...connected...");
104             XBridge bridge2 = factory.createBridge(
105                 "", PROTOCOL_DESCRIPTION, connection, prov);
106             System.out.println("Client, 2nd connection: ...bridged.");
107             synchronized (lock) {
108                 while (!done) {
109                     lock.wait();
110                 }
111             }
112             return true;
113         }
114 
115         private static final class Provider implements XInstanceProvider {
116             public Object getInstance(String instanceName) {
117                 synchronized (map) {
118                     Object o = map.get(instanceName);
119                     if (o == null) {
120                         o = new XDerived() {};
121                         map.put(instanceName, o);
122                     }
123                     return o;
124                 }
125             }
126 
127             private final HashMap map = new HashMap();
128         }
129 
130         private final class Done implements XDone {
131             public void notifyDone() {
132                 synchronized (lock) {
133                     done = true;
134                     lock.notifyAll();
135                 }
136             }
137         }
138 
139         private final Object lock = new Object();
140         private boolean done = false;
141     }
142 
143     private static final class Provider implements XInstanceProvider {
144         public Provider(TestBed testBed, String unoTypes, String unoServices) {
145             this.testBed = testBed;
146             this.unoTypes = unoTypes;
147             this.unoServices = unoServices;
148         }
149 
150         public Object getInstance(String instanceName) {
151             return new XTestFrame() {
152                     public void notifyAccepting(
153                         final XDone done, final Object object1,
154                         final Object object2)
155                     {
156                         new Thread() {
157                             public void run() {
158                                 try {
159                                     Object test1Aa = object1;
160                                     XBase test1Ab = UnoRuntime.queryInterface(
161                                         XBase.class, test1Aa);
162                                     XDerived test1Ac =
163                                         UnoRuntime.queryInterface(
164                                             XDerived.class, test1Aa);
165                                     Object test2Aa = object2;
166                                     XBase test2Ab = UnoRuntime.queryInterface(
167                                         XBase.class, test2Aa);
168                                     XDerived test2Ac =
169                                         UnoRuntime.queryInterface(
170                                             XDerived.class, test2Aa);
171 
172                                     Hashtable params = new Hashtable();
173                                     params.put("UNO_TYPES", unoTypes);
174                                     params.put("UNO_SERVICES", unoServices);
175                                     XComponentContext context = Bootstrap.
176                                        defaultBootstrap_InitialComponentContext(
177                                             null, params);
178                                     XMultiComponentFactory factory
179                                         = context.getServiceManager();
180                                     XImplementationLoader loader =
181                                         UnoRuntime.queryInterface(
182                                             XImplementationLoader.class,
183                                             factory.createInstanceWithContext(
184                                                 "com.sun.star.loader."
185                                                 + "SharedLibrary",
186                                                 context));
187                                     XSingleComponentFactory factory2 =
188                                         UnoRuntime.queryInterface(
189                                             XSingleComponentFactory.class,
190                                             loader.activate(
191                                                 "com.sun.star.test.bridges."
192                                                 + "testequals.impl",
193                                                 "", "../lib/testequals.uno",
194                                                 null));
195                                     XTestInterface test =
196                                         UnoRuntime.queryInterface(
197                                             XTestInterface.class,
198                                             factory2.createInstanceWithContext(
199                                                 context));
200                                     // allow client to start accepting:
201                                     Thread.sleep(3000);
202                                     test.connect(
203                                         CONNECTION_DESCRIPTION,
204                                         PROTOCOL_DESCRIPTION);
205 
206                                     Object test1Ba = test.get(INSTANCE1);
207                                     XBase test1Bb = UnoRuntime.queryInterface(
208                                         XBase.class, test1Ba);
209                                     XDerived test1Bc =
210                                         UnoRuntime.queryInterface(
211                                             XDerived.class, test1Ba);
212                                     Object test2Ba = test.get(INSTANCE2);
213                                     XBase test2Bb = UnoRuntime.queryInterface(
214                                         XBase.class, test2Ba);
215                                     XDerived test2Bc =
216                                         UnoRuntime.queryInterface(
217                                             XDerived.class, test2Ba);
218 
219                                     boolean success = true;
220 
221                                     success &= test(
222                                         "UnoRumtime.areSame(null, null)",
223                                         UnoRuntime.areSame(null, null));
224                                     success &= test(
225                                         "!UnoRumtime.areSame(null, test1Aa)",
226                                         !UnoRuntime.areSame(null, test1Aa));
227                                     success &= test(
228                                         "!UnoRumtime.areSame(null, test1Ab)",
229                                         !UnoRuntime.areSame(null, test1Ab));
230                                     success &= test(
231                                         "!UnoRumtime.areSame(null, test1Ac)",
232                                         !UnoRuntime.areSame(null, test1Ac));
233                                     success &= test(
234                                         "!UnoRumtime.areSame(null, test1Ba)",
235                                         !UnoRuntime.areSame(null, test1Ba));
236                                     success &= test(
237                                         "!UnoRumtime.areSame(null, test1Bb)",
238                                         !UnoRuntime.areSame(null, test1Bb));
239                                     success &= test(
240                                         "!UnoRumtime.areSame(null, test1Bc)",
241                                         !UnoRuntime.areSame(null, test1Bc));
242                                     success &= test(
243                                         "!UnoRumtime.areSame(null, test2Aa)",
244                                         !UnoRuntime.areSame(null, test2Aa));
245                                     success &= test(
246                                         "!UnoRumtime.areSame(null, test2Ab)",
247                                         !UnoRuntime.areSame(null, test2Ab));
248                                     success &= test(
249                                         "!UnoRumtime.areSame(null, test2Ac)",
250                                         !UnoRuntime.areSame(null, test2Ac));
251                                     success &= test(
252                                         "!UnoRumtime.areSame(null, test2Ba)",
253                                         !UnoRuntime.areSame(null, test2Ba));
254                                     success &= test(
255                                         "!UnoRumtime.areSame(null, test2Bb)",
256                                         !UnoRuntime.areSame(null, test2Bb));
257                                     success &= test(
258                                         "!UnoRumtime.areSame(null, test2Bc)",
259                                         !UnoRuntime.areSame(null, test2Bc));
260 
261                                     success &= test(
262                                         "!test1Aa.equals(null)",
263                                         !test1Aa.equals(null));
264                                     success &= test(
265                                         "!UnoRuntime.areSame(test1Aa, null)",
266                                         !UnoRuntime.areSame(test1Aa, null));
267                                     success &= test(
268                                         "test1Aa.equals(test1Aa)",
269                                         test1Aa.equals(test1Aa));
270                                     success &= test(
271                                         "UnoRuntime.areSame(test1Aa, test1Aa)",
272                                         UnoRuntime.areSame(test1Aa, test1Aa));
273                                     success &= test(
274                                         "test1Aa.equals(test1Ab)",
275                                         test1Aa.equals(test1Ab));
276                                     success &= test(
277                                         "UnoRuntime.areSame(test1Aa, test1Ab)",
278                                         UnoRuntime.areSame(test1Aa, test1Ab));
279                                     success &= test(
280                                         "test1Aa.equals(test1Ac)",
281                                         test1Aa.equals(test1Ac));
282                                     success &= test(
283                                         "UnoRuntime.areSame(test1Aa, test1Ac)",
284                                         UnoRuntime.areSame(test1Aa, test1Ac));
285                                     success &= test(
286                                         "test1Aa.equals(test1Ba)",
287                                         test1Aa.equals(test1Ba));
288                                     success &= test(
289                                         "UnoRuntime.areSame(test1Aa, test1Ba)",
290                                         UnoRuntime.areSame(test1Aa, test1Ba));
291                                     success &= test(
292                                         "test1Aa.equals(test1Bb)",
293                                         test1Aa.equals(test1Bb));
294                                     success &= test(
295                                         "UnoRuntime.areSame(test1Aa, test1Bb)",
296                                         UnoRuntime.areSame(test1Aa, test1Bb));
297                                     success &= test(
298                                         "test1Aa.equals(test1Bc)",
299                                         test1Aa.equals(test1Bc));
300                                     success &= test(
301                                         "UnoRuntime.areSame(test1Aa, test1Bc)",
302                                         UnoRuntime.areSame(test1Aa, test1Bc));
303                                     success &= test(
304                                         "!test1Aa.equals(test2Aa)",
305                                         !test1Aa.equals(test2Aa));
306                                     success &= test(
307                                         "!UnoRuntime.areSame(test1Aa, test2Aa)",
308                                         !UnoRuntime.areSame(test1Aa, test2Aa));
309                                     success &= test(
310                                         "!test1Aa.equals(test2Ab)",
311                                         !test1Aa.equals(test2Ab));
312                                     success &= test(
313                                         "!UnoRuntime.areSame(test1Aa, test2Ab)",
314                                         !UnoRuntime.areSame(test1Aa, test2Ab));
315                                     success &= test(
316                                         "!test1Aa.equals(test2Ac)",
317                                         !test1Aa.equals(test2Ac));
318                                     success &= test(
319                                         "!UnoRuntime.areSame(test1Aa, test2Ac)",
320                                         !UnoRuntime.areSame(test1Aa, test2Ac));
321                                     success &= test(
322                                         "!test1Aa.equals(test2Ba)",
323                                         !test1Aa.equals(test2Ba));
324                                     success &= test(
325                                         "!UnoRuntime.areSame(test1Aa, test2Ba)",
326                                         !UnoRuntime.areSame(test1Aa, test2Ba));
327                                     success &= test(
328                                         "!test1Aa.equals(test2Bb)",
329                                         !test1Aa.equals(test2Bb));
330                                     success &= test(
331                                         "!UnoRuntime.areSame(test1Aa, test2Bb)",
332                                         !UnoRuntime.areSame(test1Aa, test2Bb));
333                                     success &= test(
334                                         "!test1Aa.equals(test2Bc)",
335                                         !test1Aa.equals(test2Bc));
336                                     success &= test(
337                                         "!UnoRuntime.areSame(test1Aa, test2Bc)",
338                                         !UnoRuntime.areSame(test1Aa, test2Bc));
339 
340                                     success &= test(
341                                         "!test1Ab.equals(null)",
342                                         !test1Ab.equals(null));
343                                     success &= test(
344                                         "!UnoRuntime.areSame(test1Ab, null)",
345                                         !UnoRuntime.areSame(test1Ab, null));
346                                     success &= test(
347                                         "test1Ab.equals(test1Aa)",
348                                         test1Ab.equals(test1Aa));
349                                     success &= test(
350                                         "UnoRuntime.areSame(test1Ab, test1Aa)",
351                                         UnoRuntime.areSame(test1Ab, test1Aa));
352                                     success &= test(
353                                         "test1Ab.equals(test1Ab)",
354                                         test1Ab.equals(test1Ab));
355                                     success &= test(
356                                         "UnoRuntime.areSame(test1Ab, test1Ab)",
357                                         UnoRuntime.areSame(test1Ab, test1Ab));
358                                     success &= test(
359                                         "test1Ab.equals(test1Ac)",
360                                         test1Ab.equals(test1Ac));
361                                     success &= test(
362                                         "UnoRuntime.areSame(test1Ab, test1Ac)",
363                                         UnoRuntime.areSame(test1Ab, test1Ac));
364                                     success &= test(
365                                         "test1Ab.equals(test1Ba)",
366                                         test1Ab.equals(test1Ba));
367                                     success &= test(
368                                         "UnoRuntime.areSame(test1Ab, test1Ba)",
369                                         UnoRuntime.areSame(test1Ab, test1Ba));
370                                     success &= test(
371                                         "test1Ab.equals(test1Bb)",
372                                         test1Ab.equals(test1Bb));
373                                     success &= test(
374                                         "UnoRuntime.areSame(test1Ab, test1Bb)",
375                                         UnoRuntime.areSame(test1Ab, test1Bb));
376                                     success &= test(
377                                         "test1Ab.equals(test1Bc)",
378                                         test1Ab.equals(test1Bc));
379                                     success &= test(
380                                         "UnoRuntime.areSame(test1Ab, test1Bc)",
381                                         UnoRuntime.areSame(test1Ab, test1Bc));
382                                     success &= test(
383                                         "!test1Ab.equals(test2Aa)",
384                                         !test1Ab.equals(test2Aa));
385                                     success &= test(
386                                         "!UnoRuntime.areSame(test1Ab, test2Aa)",
387                                         !UnoRuntime.areSame(test1Ab, test2Aa));
388                                     success &= test(
389                                         "!test1Ab.equals(test2Ab)",
390                                         !test1Ab.equals(test2Ab));
391                                     success &= test(
392                                         "!UnoRuntime.areSame(test1Ab, test2Ab)",
393                                         !UnoRuntime.areSame(test1Ab, test2Ab));
394                                     success &= test(
395                                         "!test1Ab.equals(test2Ac)",
396                                         !test1Ab.equals(test2Ac));
397                                     success &= test(
398                                         "!UnoRuntime.areSame(test1Ab, test2Ac)",
399                                         !UnoRuntime.areSame(test1Ab, test2Ac));
400                                     success &= test(
401                                         "!test1Ab.equals(test2Ba)",
402                                         !test1Ab.equals(test2Ba));
403                                     success &= test(
404                                         "!UnoRuntime.areSame(test1Ab, test2Ba)",
405                                         !UnoRuntime.areSame(test1Ab, test2Ba));
406                                     success &= test(
407                                         "!test1Ab.equals(test2Bb)",
408                                         !test1Ab.equals(test2Bb));
409                                     success &= test(
410                                         "!UnoRuntime.areSame(test1Ab, test2Bb)",
411                                         !UnoRuntime.areSame(test1Ab, test2Bb));
412                                     success &= test(
413                                         "!test1Ab.equals(test2Bc)",
414                                         !test1Ab.equals(test2Bc));
415                                     success &= test(
416                                         "!UnoRuntime.areSame(test1Ab, test2Bc)",
417                                         !UnoRuntime.areSame(test1Ab, test2Bc));
418 
419                                     success &= test(
420                                         "!test1Ac.equals(null)",
421                                         !test1Ac.equals(null));
422                                     success &= test(
423                                         "!UnoRuntime.areSame(test1Ac, null)",
424                                         !UnoRuntime.areSame(test1Ac, null));
425                                     success &= test(
426                                         "test1Ac.equals(test1Aa)",
427                                         test1Ac.equals(test1Aa));
428                                     success &= test(
429                                         "UnoRuntime.areSame(test1Ac, test1Aa)",
430                                         UnoRuntime.areSame(test1Ac, test1Aa));
431                                     success &= test(
432                                         "test1Ac.equals(test1Ab)",
433                                         test1Ac.equals(test1Ab));
434                                     success &= test(
435                                         "UnoRuntime.areSame(test1Ac, test1Ab)",
436                                         UnoRuntime.areSame(test1Ac, test1Ab));
437                                     success &= test(
438                                         "test1Ac.equals(test1Ac)",
439                                         test1Ac.equals(test1Ac));
440                                     success &= test(
441                                         "UnoRuntime.areSame(test1Ac, test1Ac)",
442                                         UnoRuntime.areSame(test1Ac, test1Ac));
443                                     success &= test(
444                                         "test1Ac.equals(test1Ba)",
445                                         test1Ac.equals(test1Ba));
446                                     success &= test(
447                                         "UnoRuntime.areSame(test1Ac, test1Ba)",
448                                         UnoRuntime.areSame(test1Ac, test1Ba));
449                                     success &= test(
450                                         "test1Ac.equals(test1Bb)",
451                                         test1Ac.equals(test1Bb));
452                                     success &= test(
453                                         "UnoRuntime.areSame(test1Ac, test1Bb)",
454                                         UnoRuntime.areSame(test1Ac, test1Bb));
455                                     success &= test(
456                                         "test1Ac.equals(test1Bc)",
457                                         test1Ac.equals(test1Bc));
458                                     success &= test(
459                                         "UnoRuntime.areSame(test1Ac, test1Bc)",
460                                         UnoRuntime.areSame(test1Ac, test1Bc));
461                                     success &= test(
462                                         "!test1Ac.equals(test2Aa)",
463                                         !test1Ac.equals(test2Aa));
464                                     success &= test(
465                                         "!UnoRuntime.areSame(test1Ac, test2Aa)",
466                                         !UnoRuntime.areSame(test1Ac, test2Aa));
467                                     success &= test(
468                                         "!test1Ac.equals(test2Ab)",
469                                         !test1Ac.equals(test2Ab));
470                                     success &= test(
471                                         "!UnoRuntime.areSame(test1Ac, test2Ab)",
472                                         !UnoRuntime.areSame(test1Ac, test2Ab));
473                                     success &= test(
474                                         "!test1Ac.equals(test2Ac)",
475                                         !test1Ac.equals(test2Ac));
476                                     success &= test(
477                                         "!UnoRuntime.areSame(test1Ac, test2Ac)",
478                                         !UnoRuntime.areSame(test1Ac, test2Ac));
479                                     success &= test(
480                                         "!test1Ac.equals(test2Ba)",
481                                         !test1Ac.equals(test2Ba));
482                                     success &= test(
483                                         "!UnoRuntime.areSame(test1Ac, test2Ba)",
484                                         !UnoRuntime.areSame(test1Ac, test2Ba));
485                                     success &= test(
486                                         "!test1Ac.equals(test2Bb)",
487                                         !test1Ac.equals(test2Bb));
488                                     success &= test(
489                                         "!UnoRuntime.areSame(test1Ac, test2Bb)",
490                                         !UnoRuntime.areSame(test1Ac, test2Bb));
491                                     success &= test(
492                                         "!test1Ac.equals(test2Bc)",
493                                         !test1Ac.equals(test2Bc));
494                                     success &= test(
495                                         "!UnoRuntime.areSame(test1Ac, test2Bc)",
496                                         !UnoRuntime.areSame(test1Ac, test2Bc));
497 
498                                     success &= test(
499                                         "!test1Ba.equals(null)",
500                                         !test1Ba.equals(null));
501                                     success &= test(
502                                         "!UnoRuntime.areSame(test1Ba, null)",
503                                         !UnoRuntime.areSame(test1Ba, null));
504                                     success &= test(
505                                         "test1Ba.equals(test1Aa)",
506                                         test1Ba.equals(test1Aa));
507                                     success &= test(
508                                         "UnoRuntime.areSame(test1Ba, test1Aa)",
509                                         UnoRuntime.areSame(test1Ba, test1Aa));
510                                     success &= test(
511                                         "test1Ba.equals(test1Ab)",
512                                         test1Ba.equals(test1Ab));
513                                     success &= test(
514                                         "UnoRuntime.areSame(test1Ba, test1Ab)",
515                                         UnoRuntime.areSame(test1Ba, test1Ab));
516                                     success &= test(
517                                         "test1Ba.equals(test1Ac)",
518                                         test1Ba.equals(test1Ac));
519                                     success &= test(
520                                         "UnoRuntime.areSame(test1Ba, test1Ac)",
521                                         UnoRuntime.areSame(test1Ba, test1Ac));
522                                     success &= test(
523                                         "test1Ba.equals(test1Ba)",
524                                         test1Ba.equals(test1Ba));
525                                     success &= test(
526                                         "UnoRuntime.areSame(test1Ba, test1Ba)",
527                                         UnoRuntime.areSame(test1Ba, test1Ba));
528                                     success &= test(
529                                         "test1Ba.equals(test1Bb)",
530                                         test1Ba.equals(test1Bb));
531                                     success &= test(
532                                         "UnoRuntime.areSame(test1Ba, test1Bb)",
533                                         UnoRuntime.areSame(test1Ba, test1Bb));
534                                     success &= test(
535                                         "test1Ba.equals(test1Bc)",
536                                         test1Ba.equals(test1Bc));
537                                     success &= test(
538                                         "UnoRuntime.areSame(test1Ba, test1Bc)",
539                                         UnoRuntime.areSame(test1Ba, test1Bc));
540                                     success &= test(
541                                         "!test1Ba.equals(test2Aa)",
542                                         !test1Ba.equals(test2Aa));
543                                     success &= test(
544                                         "!UnoRuntime.areSame(test1Ba, test2Aa)",
545                                         !UnoRuntime.areSame(test1Ba, test2Aa));
546                                     success &= test(
547                                         "!test1Ba.equals(test2Ab)",
548                                         !test1Ba.equals(test2Ab));
549                                     success &= test(
550                                         "!UnoRuntime.areSame(test1Ba, test2Ab)",
551                                         !UnoRuntime.areSame(test1Ba, test2Ab));
552                                     success &= test(
553                                         "!test1Ba.equals(test2Ac)",
554                                         !test1Ba.equals(test2Ac));
555                                     success &= test(
556                                         "!UnoRuntime.areSame(test1Ba, test2Ac)",
557                                         !UnoRuntime.areSame(test1Ba, test2Ac));
558                                     success &= test(
559                                         "!test1Ba.equals(test2Ba)",
560                                         !test1Ba.equals(test2Ba));
561                                     success &= test(
562                                         "!UnoRuntime.areSame(test1Ba, test2Ba)",
563                                         !UnoRuntime.areSame(test1Ba, test2Ba));
564                                     success &= test(
565                                         "!test1Ba.equals(test2Bb)",
566                                         !test1Ba.equals(test2Bb));
567                                     success &= test(
568                                         "!UnoRuntime.areSame(test1Ba, test2Bb)",
569                                         !UnoRuntime.areSame(test1Ba, test2Bb));
570                                     success &= test(
571                                         "!test1Ba.equals(test2Bc)",
572                                         !test1Ba.equals(test2Bc));
573                                     success &= test(
574                                         "!UnoRuntime.areSame(test1Ba, test2Bc)",
575                                         !UnoRuntime.areSame(test1Ba, test2Bc));
576 
577                                     success &= test(
578                                         "!test1Bb.equals(null)",
579                                         !test1Bb.equals(null));
580                                     success &= test(
581                                         "!UnoRuntime.areSame(test1Bb, null)",
582                                         !UnoRuntime.areSame(test1Bb, null));
583                                     success &= test(
584                                         "test1Bb.equals(test1Aa)",
585                                         test1Bb.equals(test1Aa));
586                                     success &= test(
587                                         "UnoRuntime.areSame(test1Bb, test1Aa)",
588                                         UnoRuntime.areSame(test1Bb, test1Aa));
589                                     success &= test(
590                                         "test1Bb.equals(test1Ab)",
591                                         test1Bb.equals(test1Ab));
592                                     success &= test(
593                                         "UnoRuntime.areSame(test1Bb, test1Ab)",
594                                         UnoRuntime.areSame(test1Bb, test1Ab));
595                                     success &= test(
596                                         "test1Bb.equals(test1Ac)",
597                                         test1Bb.equals(test1Ac));
598                                     success &= test(
599                                         "UnoRuntime.areSame(test1Bb, test1Ac)",
600                                         UnoRuntime.areSame(test1Bb, test1Ac));
601                                     success &= test(
602                                         "test1Bb.equals(test1Ba)",
603                                         test1Bb.equals(test1Ba));
604                                     success &= test(
605                                         "UnoRuntime.areSame(test1Bb, test1Ba)",
606                                         UnoRuntime.areSame(test1Bb, test1Ba));
607                                     success &= test(
608                                         "test1Bb.equals(test1Bb)",
609                                         test1Bb.equals(test1Bb));
610                                     success &= test(
611                                         "UnoRuntime.areSame(test1Bb, test1Bb)",
612                                         UnoRuntime.areSame(test1Bb, test1Bb));
613                                     success &= test(
614                                         "test1Bb.equals(test1Bc)",
615                                         test1Bb.equals(test1Bc));
616                                     success &= test(
617                                         "UnoRuntime.areSame(test1Bb, test1Bc)",
618                                         UnoRuntime.areSame(test1Bb, test1Bc));
619                                     success &= test(
620                                         "!test1Bb.equals(test2Aa)",
621                                         !test1Bb.equals(test2Aa));
622                                     success &= test(
623                                         "!UnoRuntime.areSame(test1Bb, test2Aa)",
624                                         !UnoRuntime.areSame(test1Bb, test2Aa));
625                                     success &= test(
626                                         "!test1Bb.equals(test2Ab)",
627                                         !test1Bb.equals(test2Ab));
628                                     success &= test(
629                                         "!UnoRuntime.areSame(test1Bb, test2Ab)",
630                                         !UnoRuntime.areSame(test1Bb, test2Ab));
631                                     success &= test(
632                                         "!test1Bb.equals(test2Ac)",
633                                         !test1Bb.equals(test2Ac));
634                                     success &= test(
635                                         "!UnoRuntime.areSame(test1Bb, test2Ac)",
636                                         !UnoRuntime.areSame(test1Bb, test2Ac));
637                                     success &= test(
638                                         "!test1Bb.equals(test2Ba)",
639                                         !test1Bb.equals(test2Ba));
640                                     success &= test(
641                                         "!UnoRuntime.areSame(test1Bb, test2Ba)",
642                                         !UnoRuntime.areSame(test1Bb, test2Ba));
643                                     success &= test(
644                                         "!test1Bb.equals(test2Bb)",
645                                         !test1Bb.equals(test2Bb));
646                                     success &= test(
647                                         "!UnoRuntime.areSame(test1Bb, test2Bb)",
648                                         !UnoRuntime.areSame(test1Bb, test2Bb));
649                                     success &= test(
650                                         "!test1Bb.equals(test2Bc)",
651                                         !test1Bb.equals(test2Bc));
652                                     success &= test(
653                                         "!UnoRuntime.areSame(test1Bb, test2Bc)",
654                                         !UnoRuntime.areSame(test1Bb, test2Bc));
655 
656                                     success &= test(
657                                         "!test1Bc.equals(null)",
658                                         !test1Bc.equals(null));
659                                     success &= test(
660                                         "!UnoRuntime.areSame(test1Bc, null)",
661                                         !UnoRuntime.areSame(test1Bc, null));
662                                     success &= test(
663                                         "test1Bc.equals(test1Aa)",
664                                         test1Bc.equals(test1Aa));
665                                     success &= test(
666                                         "UnoRuntime.areSame(test1Bc, test1Aa)",
667                                         UnoRuntime.areSame(test1Bc, test1Aa));
668                                     success &= test(
669                                         "test1Bc.equals(test1Ab)",
670                                         test1Bc.equals(test1Ab));
671                                     success &= test(
672                                         "UnoRuntime.areSame(test1Bc, test1Ab)",
673                                         UnoRuntime.areSame(test1Bc, test1Ab));
674                                     success &= test(
675                                         "test1Bc.equals(test1Ac)",
676                                         test1Bc.equals(test1Ac));
677                                     success &= test(
678                                         "UnoRuntime.areSame(test1Bc, test1Ac)",
679                                         UnoRuntime.areSame(test1Bc, test1Ac));
680                                     success &= test(
681                                         "test1Bc.equals(test1Ba)",
682                                         test1Bc.equals(test1Ba));
683                                     success &= test(
684                                         "UnoRuntime.areSame(test1Bc, test1Ba)",
685                                         UnoRuntime.areSame(test1Bc, test1Ba));
686                                     success &= test(
687                                         "test1Bc.equals(test1Bb)",
688                                         test1Bc.equals(test1Bb));
689                                     success &= test(
690                                         "UnoRuntime.areSame(test1Bc, test1Bb)",
691                                         UnoRuntime.areSame(test1Bc, test1Bb));
692                                     success &= test(
693                                         "test1Bc.equals(test1Bc)",
694                                         test1Bc.equals(test1Bc));
695                                     success &= test(
696                                         "UnoRuntime.areSame(test1Bc, test1Bc)",
697                                         UnoRuntime.areSame(test1Bc, test1Bc));
698                                     success &= test(
699                                         "!test1Bc.equals(test2Aa)",
700                                         !test1Bc.equals(test2Aa));
701                                     success &= test(
702                                         "!UnoRuntime.areSame(test1Bc, test2Aa)",
703                                         !UnoRuntime.areSame(test1Bc, test2Aa));
704                                     success &= test(
705                                         "!test1Bc.equals(test2Ab)",
706                                         !test1Bc.equals(test2Ab));
707                                     success &= test(
708                                         "!UnoRuntime.areSame(test1Bc, test2Ab)",
709                                         !UnoRuntime.areSame(test1Bc, test2Ab));
710                                     success &= test(
711                                         "!test1Bc.equals(test2Ac)",
712                                         !test1Bc.equals(test2Ac));
713                                     success &= test(
714                                         "!UnoRuntime.areSame(test1Bc, test2Ac)",
715                                         !UnoRuntime.areSame(test1Bc, test2Ac));
716                                     success &= test(
717                                         "!test1Bc.equals(test2Ba)",
718                                         !test1Bc.equals(test2Ba));
719                                     success &= test(
720                                         "!UnoRuntime.areSame(test1Bc, test2Ba)",
721                                         !UnoRuntime.areSame(test1Bc, test2Ba));
722                                     success &= test(
723                                         "!test1Bc.equals(test2Bb)",
724                                         !test1Bc.equals(test2Bb));
725                                     success &= test(
726                                         "!UnoRuntime.areSame(test1Bc, test2Bb)",
727                                         !UnoRuntime.areSame(test1Bc, test2Bb));
728                                     success &= test(
729                                         "!test1Bc.equals(test2Bc)",
730                                         !test1Bc.equals(test2Bc));
731                                     success &= test(
732                                         "!UnoRuntime.areSame(test1Bc, test2Bc)",
733                                         !UnoRuntime.areSame(test1Bc, test2Bc));
734 
735                                     success &= test(
736                                         "!test2Aa.equals(null)",
737                                         !test2Aa.equals(null));
738                                     success &= test(
739                                         "!UnoRuntime.areSame(test2Aa, null)",
740                                         !UnoRuntime.areSame(test2Aa, null));
741                                     success &= test(
742                                         "!test2Aa.equals(test1Aa)",
743                                         !test2Aa.equals(test1Aa));
744                                     success &= test(
745                                         "!UnoRuntime.areSame(test2Aa, test1Aa)",
746                                         !UnoRuntime.areSame(test2Aa, test1Aa));
747                                     success &= test(
748                                         "!test2Aa.equals(test1Ab)",
749                                         !test2Aa.equals(test1Ab));
750                                     success &= test(
751                                         "!UnoRuntime.areSame(test2Aa, test1Ab)",
752                                         !UnoRuntime.areSame(test2Aa, test1Ab));
753                                     success &= test(
754                                         "!test2Aa.equals(test1Ac)",
755                                         !test2Aa.equals(test1Ac));
756                                     success &= test(
757                                         "!UnoRuntime.areSame(test2Aa, test1Ac)",
758                                         !UnoRuntime.areSame(test2Aa, test1Ac));
759                                     success &= test(
760                                         "!test2Aa.equals(test1Ba)",
761                                         !test2Aa.equals(test1Ba));
762                                     success &= test(
763                                         "!UnoRuntime.areSame(test2Aa, test1Ba)",
764                                         !UnoRuntime.areSame(test2Aa, test1Ba));
765                                     success &= test(
766                                         "!test2Aa.equals(test1Bb)",
767                                         !test2Aa.equals(test1Bb));
768                                     success &= test(
769                                         "!UnoRuntime.areSame(test2Aa, test1Bb)",
770                                         !UnoRuntime.areSame(test2Aa, test1Bb));
771                                     success &= test(
772                                         "!test2Aa.equals(test1Bc)",
773                                         !test2Aa.equals(test1Bc));
774                                     success &= test(
775                                         "!UnoRuntime.areSame(test2Aa, test1Bc)",
776                                         !UnoRuntime.areSame(test2Aa, test1Bc));
777                                     success &= test(
778                                         "test2Aa.equals(test2Aa)",
779                                         test2Aa.equals(test2Aa));
780                                     success &= test(
781                                         "UnoRuntime.areSame(test2Aa, test2Aa)",
782                                         UnoRuntime.areSame(test2Aa, test2Aa));
783                                     success &= test(
784                                         "test2Aa.equals(test2Ab)",
785                                         test2Aa.equals(test2Ab));
786                                     success &= test(
787                                         "UnoRuntime.areSame(test2Aa, test2Ab)",
788                                         UnoRuntime.areSame(test2Aa, test2Ab));
789                                     success &= test(
790                                         "test2Aa.equals(test2Ac)",
791                                         test2Aa.equals(test2Ac));
792                                     success &= test(
793                                         "UnoRuntime.areSame(test2Aa, test2Ac)",
794                                         UnoRuntime.areSame(test2Aa, test2Ac));
795                                     success &= test(
796                                         "test2Aa.equals(test2Ba)",
797                                         test2Aa.equals(test2Ba));
798                                     success &= test(
799                                         "UnoRuntime.areSame(test2Aa, test2Ba)",
800                                         UnoRuntime.areSame(test2Aa, test2Ba));
801                                     success &= test(
802                                         "test2Aa.equals(test2Bb)",
803                                         test2Aa.equals(test2Bb));
804                                     success &= test(
805                                         "UnoRuntime.areSame(test2Aa, test2Bb)",
806                                         UnoRuntime.areSame(test2Aa, test2Bb));
807                                     success &= test(
808                                         "test2Aa.equals(test2Bc)",
809                                         test2Aa.equals(test2Bc));
810                                     success &= test(
811                                         "UnoRuntime.areSame(test2Aa, test2Bc)",
812                                         UnoRuntime.areSame(test2Aa, test2Bc));
813 
814                                     success &= test(
815                                         "!test2Ab.equals(null)",
816                                         !test2Ab.equals(null));
817                                     success &= test(
818                                         "!UnoRuntime.areSame(test2Ab, null)",
819                                         !UnoRuntime.areSame(test2Ab, null));
820                                     success &= test(
821                                         "!test2Ab.equals(test1Aa)",
822                                         !test2Ab.equals(test1Aa));
823                                     success &= test(
824                                         "!UnoRuntime.areSame(test2Ab, test1Aa)",
825                                         !UnoRuntime.areSame(test2Ab, test1Aa));
826                                     success &= test(
827                                         "!test2Ab.equals(test1Ab)",
828                                         !test2Ab.equals(test1Ab));
829                                     success &= test(
830                                         "!UnoRuntime.areSame(test2Ab, test1Ab)",
831                                         !UnoRuntime.areSame(test2Ab, test1Ab));
832                                     success &= test(
833                                         "!test2Ab.equals(test1Ac)",
834                                         !test2Ab.equals(test1Ac));
835                                     success &= test(
836                                         "!UnoRuntime.areSame(test2Ab, test1Ac)",
837                                         !UnoRuntime.areSame(test2Ab, test1Ac));
838                                     success &= test(
839                                         "!test2Ab.equals(test1Ba)",
840                                         !test2Ab.equals(test1Ba));
841                                     success &= test(
842                                         "!UnoRuntime.areSame(test2Ab, test1Ba)",
843                                         !UnoRuntime.areSame(test2Ab, test1Ba));
844                                     success &= test(
845                                         "!test2Ab.equals(test1Bb)",
846                                         !test2Ab.equals(test1Bb));
847                                     success &= test(
848                                         "!UnoRuntime.areSame(test2Ab, test1Bb)",
849                                         !UnoRuntime.areSame(test2Ab, test1Bb));
850                                     success &= test(
851                                         "!test2Ab.equals(test1Bc)",
852                                         !test2Ab.equals(test1Bc));
853                                     success &= test(
854                                         "!UnoRuntime.areSame(test2Ab, test1Bc)",
855                                         !UnoRuntime.areSame(test2Ab, test1Bc));
856                                     success &= test(
857                                         "test2Ab.equals(test2Aa)",
858                                         test2Ab.equals(test2Aa));
859                                     success &= test(
860                                         "UnoRuntime.areSame(test2Ab, test2Aa)",
861                                         UnoRuntime.areSame(test2Ab, test2Aa));
862                                     success &= test(
863                                         "test2Ab.equals(test2Ab)",
864                                         test2Ab.equals(test2Ab));
865                                     success &= test(
866                                         "UnoRuntime.areSame(test2Ab, test2Ab)",
867                                         UnoRuntime.areSame(test2Ab, test2Ab));
868                                     success &= test(
869                                         "test2Ab.equals(test2Ac)",
870                                         test2Ab.equals(test2Ac));
871                                     success &= test(
872                                         "UnoRuntime.areSame(test2Ab, test2Ac)",
873                                         UnoRuntime.areSame(test2Ab, test2Ac));
874                                     success &= test(
875                                         "test2Ab.equals(test2Ba)",
876                                         test2Ab.equals(test2Ba));
877                                     success &= test(
878                                         "UnoRuntime.areSame(test2Ab, test2Ba)",
879                                         UnoRuntime.areSame(test2Ab, test2Ba));
880                                     success &= test(
881                                         "test2Ab.equals(test2Bb)",
882                                         test2Ab.equals(test2Bb));
883                                     success &= test(
884                                         "UnoRuntime.areSame(test2Ab, test2Bb)",
885                                         UnoRuntime.areSame(test2Ab, test2Bb));
886                                     success &= test(
887                                         "test2Ab.equals(test2Bc)",
888                                         test2Ab.equals(test2Bc));
889                                     success &= test(
890                                         "UnoRuntime.areSame(test2Ab, test2Bc)",
891                                         UnoRuntime.areSame(test2Ab, test2Bc));
892 
893                                     success &= test(
894                                         "!test2Ac.equals(null)",
895                                         !test2Ac.equals(null));
896                                     success &= test(
897                                         "!UnoRuntime.areSame(test2Ac, null)",
898                                         !UnoRuntime.areSame(test2Ac, null));
899                                     success &= test(
900                                         "!test2Ac.equals(test1Aa)",
901                                         !test2Ac.equals(test1Aa));
902                                     success &= test(
903                                         "!UnoRuntime.areSame(test2Ac, test1Aa)",
904                                         !UnoRuntime.areSame(test2Ac, test1Aa));
905                                     success &= test(
906                                         "!test2Ac.equals(test1Ab)",
907                                         !test2Ac.equals(test1Ab));
908                                     success &= test(
909                                         "!UnoRuntime.areSame(test2Ac, test1Ab)",
910                                         !UnoRuntime.areSame(test2Ac, test1Ab));
911                                     success &= test(
912                                         "!test2Ac.equals(test1Ac)",
913                                         !test2Ac.equals(test1Ac));
914                                     success &= test(
915                                         "!UnoRuntime.areSame(test2Ac, test1Ac)",
916                                         !UnoRuntime.areSame(test2Ac, test1Ac));
917                                     success &= test(
918                                         "!test2Ac.equals(test1Ba)",
919                                         !test2Ac.equals(test1Ba));
920                                     success &= test(
921                                         "!UnoRuntime.areSame(test2Ac, test1Ba)",
922                                         !UnoRuntime.areSame(test2Ac, test1Ba));
923                                     success &= test(
924                                         "!test2Ac.equals(test1Bb)",
925                                         !test2Ac.equals(test1Bb));
926                                     success &= test(
927                                         "!UnoRuntime.areSame(test2Ac, test1Bb)",
928                                         !UnoRuntime.areSame(test2Ac, test1Bb));
929                                     success &= test(
930                                         "!test2Ac.equals(test1Bc)",
931                                         !test2Ac.equals(test1Bc));
932                                     success &= test(
933                                         "!UnoRuntime.areSame(test2Ac, test1Bc)",
934                                         !UnoRuntime.areSame(test2Ac, test1Bc));
935                                     success &= test(
936                                         "test2Ac.equals(test2Aa)",
937                                         test2Ac.equals(test2Aa));
938                                     success &= test(
939                                         "UnoRuntime.areSame(test2Ac, test2Aa)",
940                                         UnoRuntime.areSame(test2Ac, test2Aa));
941                                     success &= test(
942                                         "test2Ac.equals(test2Ab)",
943                                         test2Ac.equals(test2Ab));
944                                     success &= test(
945                                         "UnoRuntime.areSame(test2Ac, test2Ab)",
946                                         UnoRuntime.areSame(test2Ac, test2Ab));
947                                     success &= test(
948                                         "test2Ac.equals(test2Ac)",
949                                         test2Ac.equals(test2Ac));
950                                     success &= test(
951                                         "UnoRuntime.areSame(test2Ac, test2Ac)",
952                                         UnoRuntime.areSame(test2Ac, test2Ac));
953                                     success &= test(
954                                         "test2Ac.equals(test2Ba)",
955                                         test2Ac.equals(test2Ba));
956                                     success &= test(
957                                         "UnoRuntime.areSame(test2Ac, test2Ba)",
958                                         UnoRuntime.areSame(test2Ac, test2Ba));
959                                     success &= test(
960                                         "test2Ac.equals(test2Bb)",
961                                         test2Ac.equals(test2Bb));
962                                     success &= test(
963                                         "UnoRuntime.areSame(test2Ac, test2Bb)",
964                                         UnoRuntime.areSame(test2Ac, test2Bb));
965                                     success &= test(
966                                         "test2Ac.equals(test2Bc)",
967                                         test2Ac.equals(test2Bc));
968                                     success &= test(
969                                         "UnoRuntime.areSame(test2Ac, test2Bc)",
970                                         UnoRuntime.areSame(test2Ac, test2Bc));
971 
972                                     success &= test(
973                                         "!test2Ba.equals(null)",
974                                         !test2Ba.equals(null));
975                                     success &= test(
976                                         "!UnoRuntime.areSame(test2Ba, null)",
977                                         !UnoRuntime.areSame(test2Ba, null));
978                                     success &= test(
979                                         "!test2Ba.equals(test1Aa)",
980                                         !test2Ba.equals(test1Aa));
981                                     success &= test(
982                                         "!UnoRuntime.areSame(test2Ba, test1Aa)",
983                                         !UnoRuntime.areSame(test2Ba, test1Aa));
984                                     success &= test(
985                                         "!test2Ba.equals(test1Ab)",
986                                         !test2Ba.equals(test1Ab));
987                                     success &= test(
988                                         "!UnoRuntime.areSame(test2Ba, test1Ab)",
989                                         !UnoRuntime.areSame(test2Ba, test1Ab));
990                                     success &= test(
991                                         "!test2Ba.equals(test1Ac)",
992                                         !test2Ba.equals(test1Ac));
993                                     success &= test(
994                                         "!UnoRuntime.areSame(test2Ba, test1Ac)",
995                                         !UnoRuntime.areSame(test2Ba, test1Ac));
996                                     success &= test(
997                                         "!test2Ba.equals(test1Ba)",
998                                         !test2Ba.equals(test1Ba));
999                                     success &= test(
1000                                         "!UnoRuntime.areSame(test2Ba, test1Ba)",
1001                                         !UnoRuntime.areSame(test2Ba, test1Ba));
1002                                     success &= test(
1003                                         "!test2Ba.equals(test1Bb)",
1004                                         !test2Ba.equals(test1Bb));
1005                                     success &= test(
1006                                         "!UnoRuntime.areSame(test2Ba, test1Bb)",
1007                                         !UnoRuntime.areSame(test2Ba, test1Bb));
1008                                     success &= test(
1009                                         "!test2Ba.equals(test1Bc)",
1010                                         !test2Ba.equals(test1Bc));
1011                                     success &= test(
1012                                         "!UnoRuntime.areSame(test2Ba, test1Bc)",
1013                                         !UnoRuntime.areSame(test2Ba, test1Bc));
1014                                     success &= test(
1015                                         "test2Ba.equals(test2Aa)",
1016                                         test2Ba.equals(test2Aa));
1017                                     success &= test(
1018                                         "UnoRuntime.areSame(test2Ba, test2Aa)",
1019                                         UnoRuntime.areSame(test2Ba, test2Aa));
1020                                     success &= test(
1021                                         "test2Ba.equals(test2Ab)",
1022                                         test2Ba.equals(test2Ab));
1023                                     success &= test(
1024                                         "UnoRuntime.areSame(test2Ba, test2Ab)",
1025                                         UnoRuntime.areSame(test2Ba, test2Ab));
1026                                     success &= test(
1027                                         "test2Ba.equals(test2Ac)",
1028                                         test2Ba.equals(test2Ac));
1029                                     success &= test(
1030                                         "UnoRuntime.areSame(test2Ba, test2Ac)",
1031                                         UnoRuntime.areSame(test2Ba, test2Ac));
1032                                     success &= test(
1033                                         "test2Ba.equals(test2Ba)",
1034                                         test2Ba.equals(test2Ba));
1035                                     success &= test(
1036                                         "UnoRuntime.areSame(test2Ba, test2Ba)",
1037                                         UnoRuntime.areSame(test2Ba, test2Ba));
1038                                     success &= test(
1039                                         "test2Ba.equals(test2Bb)",
1040                                         test2Ba.equals(test2Bb));
1041                                     success &= test(
1042                                         "UnoRuntime.areSame(test2Ba, test2Bb)",
1043                                         UnoRuntime.areSame(test2Ba, test2Bb));
1044                                     success &= test(
1045                                         "test2Ba.equals(test2Bc)",
1046                                         test2Ba.equals(test2Bc));
1047                                     success &= test(
1048                                         "UnoRuntime.areSame(test2Ba, test2Bc)",
1049                                         UnoRuntime.areSame(test2Ba, test2Bc));
1050 
1051                                     success &= test(
1052                                         "!test2Bb.equals(null)",
1053                                         !test2Bb.equals(null));
1054                                     success &= test(
1055                                         "!UnoRuntime.areSame(test2Bb, null)",
1056                                         !UnoRuntime.areSame(test2Bb, null));
1057                                     success &= test(
1058                                         "!test2Bb.equals(test1Aa)",
1059                                         !test2Bb.equals(test1Aa));
1060                                     success &= test(
1061                                         "!UnoRuntime.areSame(test2Bb, test1Aa)",
1062                                         !UnoRuntime.areSame(test2Bb, test1Aa));
1063                                     success &= test(
1064                                         "!test2Bb.equals(test1Ab)",
1065                                         !test2Bb.equals(test1Ab));
1066                                     success &= test(
1067                                         "!UnoRuntime.areSame(test2Bb, test1Ab)",
1068                                         !UnoRuntime.areSame(test2Bb, test1Ab));
1069                                     success &= test(
1070                                         "!test2Bb.equals(test1Ac)",
1071                                         !test2Bb.equals(test1Ac));
1072                                     success &= test(
1073                                         "!UnoRuntime.areSame(test2Bb, test1Ac)",
1074                                         !UnoRuntime.areSame(test2Bb, test1Ac));
1075                                     success &= test(
1076                                         "!test2Bb.equals(test1Ba)",
1077                                         !test2Bb.equals(test1Ba));
1078                                     success &= test(
1079                                         "!UnoRuntime.areSame(test2Bb, test1Ba)",
1080                                         !UnoRuntime.areSame(test2Bb, test1Ba));
1081                                     success &= test(
1082                                         "!test2Bb.equals(test1Bb)",
1083                                         !test2Bb.equals(test1Bb));
1084                                     success &= test(
1085                                         "!UnoRuntime.areSame(test2Bb, test1Bb)",
1086                                         !UnoRuntime.areSame(test2Bb, test1Bb));
1087                                     success &= test(
1088                                         "!test2Bb.equals(test1Bc)",
1089                                         !test2Bb.equals(test1Bc));
1090                                     success &= test(
1091                                         "!UnoRuntime.areSame(test2Bb, test1Bc)",
1092                                         !UnoRuntime.areSame(test2Bb, test1Bc));
1093                                     success &= test(
1094                                         "test2Bb.equals(test2Aa)",
1095                                         test2Bb.equals(test2Aa));
1096                                     success &= test(
1097                                         "UnoRuntime.areSame(test2Bb, test2Aa)",
1098                                         UnoRuntime.areSame(test2Bb, test2Aa));
1099                                     success &= test(
1100                                         "test2Bb.equals(test2Ab)",
1101                                         test2Bb.equals(test2Ab));
1102                                     success &= test(
1103                                         "UnoRuntime.areSame(test2Bb, test2Ab)",
1104                                         UnoRuntime.areSame(test2Bb, test2Ab));
1105                                     success &= test(
1106                                         "test2Bb.equals(test2Ac)",
1107                                         test2Bb.equals(test2Ac));
1108                                     success &= test(
1109                                         "UnoRuntime.areSame(test2Bb, test2Ac)",
1110                                         UnoRuntime.areSame(test2Bb, test2Ac));
1111                                     success &= test(
1112                                         "test2Bb.equals(test2Ba)",
1113                                         test2Bb.equals(test2Ba));
1114                                     success &= test(
1115                                         "UnoRuntime.areSame(test2Bb, test2Ba)",
1116                                         UnoRuntime.areSame(test2Bb, test2Ba));
1117                                     success &= test(
1118                                         "test2Bb.equals(test2Bb)",
1119                                         test2Bb.equals(test2Bb));
1120                                     success &= test(
1121                                         "UnoRuntime.areSame(test2Bb, test2Bb)",
1122                                         UnoRuntime.areSame(test2Bb, test2Bb));
1123                                     success &= test(
1124                                         "test2Bb.equals(test2Bc)",
1125                                         test2Bb.equals(test2Bc));
1126                                     success &= test(
1127                                         "UnoRuntime.areSame(test2Bb, test2Bc)",
1128                                         UnoRuntime.areSame(test2Bb, test2Bc));
1129 
1130                                     success &= test(
1131                                         "!test2Bc.equals(null)",
1132                                         !test2Bc.equals(null));
1133                                     success &= test(
1134                                         "!UnoRuntime.areSame(test2Bc, null)",
1135                                         !UnoRuntime.areSame(test2Bc, null));
1136                                     success &= test(
1137                                         "!test2Bc.equals(test1Aa)",
1138                                         !test2Bc.equals(test1Aa));
1139                                     success &= test(
1140                                         "!UnoRuntime.areSame(test2Bc, test1Aa)",
1141                                         !UnoRuntime.areSame(test2Bc, test1Aa));
1142                                     success &= test(
1143                                         "!test2Bc.equals(test1Ab)",
1144                                         !test2Bc.equals(test1Ab));
1145                                     success &= test(
1146                                         "!UnoRuntime.areSame(test2Bc, test1Ab)",
1147                                         !UnoRuntime.areSame(test2Bc, test1Ab));
1148                                     success &= test(
1149                                         "!test2Bc.equals(test1Ac)",
1150                                         !test2Bc.equals(test1Ac));
1151                                     success &= test(
1152                                         "!UnoRuntime.areSame(test2Bc, test1Ac)",
1153                                         !UnoRuntime.areSame(test2Bc, test1Ac));
1154                                     success &= test(
1155                                         "!test2Bc.equals(test1Ba)",
1156                                         !test2Bc.equals(test1Ba));
1157                                     success &= test(
1158                                         "!UnoRuntime.areSame(test2Bc, test1Ba)",
1159                                         !UnoRuntime.areSame(test2Bc, test1Ba));
1160                                     success &= test(
1161                                         "!test2Bc.equals(test1Bb)",
1162                                         !test2Bc.equals(test1Bb));
1163                                     success &= test(
1164                                         "!UnoRuntime.areSame(test2Bc, test1Bb)",
1165                                         !UnoRuntime.areSame(test2Bc, test1Bb));
1166                                     success &= test(
1167                                         "!test2Bc.equals(test1Bc)",
1168                                         !test2Bc.equals(test1Bc));
1169                                     success &= test(
1170                                         "!UnoRuntime.areSame(test2Bc, test1Bc)",
1171                                         !UnoRuntime.areSame(test2Bc, test1Bc));
1172                                     success &= test(
1173                                         "test2Bc.equals(test2Aa)",
1174                                         test2Bc.equals(test2Aa));
1175                                     success &= test(
1176                                         "UnoRuntime.areSame(test2Bc, test2Aa)",
1177                                         UnoRuntime.areSame(test2Bc, test2Aa));
1178                                     success &= test(
1179                                         "test2Bc.equals(test2Ab)",
1180                                         test2Bc.equals(test2Ab));
1181                                     success &= test(
1182                                         "UnoRuntime.areSame(test2Bc, test2Ab)",
1183                                         UnoRuntime.areSame(test2Bc, test2Ab));
1184                                     success &= test(
1185                                         "test2Bc.equals(test2Ac)",
1186                                         test2Bc.equals(test2Ac));
1187                                     success &= test(
1188                                         "UnoRuntime.areSame(test2Bc, test2Ac)",
1189                                         UnoRuntime.areSame(test2Bc, test2Ac));
1190                                     success &= test(
1191                                         "test2Bc.equals(test2Ba)",
1192                                         test2Bc.equals(test2Ba));
1193                                     success &= test(
1194                                         "UnoRuntime.areSame(test2Bc, test2Ba)",
1195                                         UnoRuntime.areSame(test2Bc, test2Ba));
1196                                     success &= test(
1197                                         "test2Bc.equals(test2Bb)",
1198                                         test2Bc.equals(test2Bb));
1199                                     success &= test(
1200                                         "UnoRuntime.areSame(test2Bc, test2Bb)",
1201                                         UnoRuntime.areSame(test2Bc, test2Bb));
1202                                     success &= test(
1203                                         "test2Bc.equals(test2Bc)",
1204                                         test2Bc.equals(test2Bc));
1205                                     success &= test(
1206                                         "UnoRuntime.areSame(test2Bc, test2Bc)",
1207                                         UnoRuntime.areSame(test2Bc, test2Bc));
1208 
1209                                     success &= test(
1210                                         "test1Aa.hashCode() == test1Ab.hashCode()",
1211                                         test1Aa.hashCode()
1212                                         == test1Ab.hashCode());
1213                                     success &= test(
1214                                         "test1Aa.hashCode()"
1215                                         + " == test1Ac.hashCode()",
1216                                         test1Aa.hashCode()
1217                                         == test1Ac.hashCode());
1218                                     success &= test(
1219                                         "test1Aa.hashCode()"
1220                                         + " == test1Ba.hashCode()",
1221                                         test1Aa.hashCode()
1222                                         == test1Ba.hashCode());
1223                                     success &= test(
1224                                         "test1Aa.hashCode()"
1225                                         + " == test1Bb.hashCode()",
1226                                         test1Aa.hashCode()
1227                                         == test1Bb.hashCode());
1228                                     success &= test(
1229                                         "test1Aa.hashCode()"
1230                                         + " == test1Bc.hashCode()",
1231                                         test1Aa.hashCode()
1232                                         == test1Bc.hashCode());
1233                                     success &= test(
1234                                         "test2Aa.hashCode()"
1235                                         + " == test2Ab.hashCode()",
1236                                         test2Aa.hashCode()
1237                                         == test2Ab.hashCode());
1238                                     success &= test(
1239                                         "test2Aa.hashCode()"
1240                                         + " == test2Ac.hashCode()",
1241                                         test2Aa.hashCode()
1242                                         == test2Ac.hashCode());
1243                                     success &= test(
1244                                         "test2Aa.hashCode()"
1245                                         + " == test2Ba.hashCode()",
1246                                         test2Aa.hashCode()
1247                                         == test2Ba.hashCode());
1248                                     success &= test(
1249                                         "test2Aa.hashCode()"
1250                                         + " == test2Bb.hashCode()",
1251                                         test2Aa.hashCode()
1252                                         == test2Bb.hashCode());
1253                                     success &= test(
1254                                         "test2Aa.hashCode()"
1255                                         + " == test2Bc.hashCode()",
1256                                         test2Aa.hashCode()
1257                                         == test2Bc.hashCode());
1258 
1259                                     done.notifyDone();
1260                                     testBed.serverDone(success);
1261                                 } catch (Exception e) {
1262                                     e.printStackTrace(System.err);
1263                                 }
1264                             };
1265 
1266                             private /*static*/ boolean test(
1267                                 String message, boolean condition)
1268                             {
1269                                 if (!condition) {
1270                                     System.err.println("Failed: " + message);
1271                                 }
1272                                 return condition;
1273                             }
1274                         }.start();
1275                     }
1276                 };
1277         }
1278 
1279         private final TestBed testBed;
1280         private final String unoTypes;
1281         private final String unoServices;
1282     }
1283 
1284     public interface XDone extends XInterface {
1285         void notifyDone();
1286 
1287         TypeInfo[] UNOTYPEINFO = { new MethodTypeInfo("notifyDone", 0, 0) };
1288     }
1289 
1290     public interface XTestFrame extends XInterface {
1291         void notifyAccepting(XDone done, Object object1, Object object2);
1292 
1293         TypeInfo[] UNOTYPEINFO = {
1294             new MethodTypeInfo("notifyAccepting", 0, TypeInfo.ONEWAY) };
1295     }
1296 
1297     // Use "127.0.0.1" instead of "localhost", see #i32281#:
1298     private static final String CONNECTION_DESCRIPTION
1299     = "socket,host=127.0.0.1,port=12346";
1300     private static final String PROTOCOL_DESCRIPTION = "urp";
1301 
1302     private static final String INSTANCE1 = "instance1";
1303     private static final String INSTANCE2 = "instance2";
1304 }
1305