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