/trunk/Examples/test-suite/java/java_director_runme.java
Java | 92 lines | 65 code | 20 blank | 7 comment | 8 complexity | 762ea3de993f503a7701df9c296ee432 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- // Mainly tests that directors are finalized correctly
- import java_director.*;
- public class java_director_runme {
- static {
- try {
- System.loadLibrary("java_director");
- } catch (UnsatisfiedLinkError e) {
- System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
- System.exit(1);
- }
- }
- public static void main(String argv[]) {
- QuuxContainer qc = createContainer();
- int instances = Quux.instances();
- if (instances != 4)
- throw new RuntimeException("Quux instances should be 4, actually " + instances);
- for (int i = 0; i < qc.size(); ++i) {
- Quux q = qc.get(i);
- if (!q.director_method().equals(qc.invoke(i))) {
- throw new RuntimeException ( "q.director_method()/qv.invoke(" + i + ")");
- }
- }
- qc = null;
- /* Watch qc get reaped, which causes the C++ object to delete
- objects from the internal vector */
- System.gc();
- System.runFinalization();
- // Give the finalizers a chance to run
- try {
- Thread.sleep(50);
- } catch (InterruptedException e) {
- }
- /* Watch the Quux objects formerly in the QuuxContainer object
- get reaped */
- System.gc();
- System.runFinalization();
- instances = Quux.instances();
- if (instances != 0)
- throw new RuntimeException("Quux instances should be 0, actually " + instances);
- /* Test Quux1's director disconnect method rename */
- Quux1 quux1 = new Quux1("quux1");
- if (quux1.disconnectMethodCalled)
- throw new RuntimeException("Oops");
- quux1.delete();
- if (!quux1.disconnectMethodCalled)
- throw new RuntimeException("disconnect method not called");
- }
- public static QuuxContainer createContainer() {
- QuuxContainer qc = new QuuxContainer();
- qc.push(new Quux("element 1"));
- qc.push(new java_director_MyQuux("element 2"));
- qc.push(new java_director_MyQuux("element 3"));
- qc.push(new Quux("element 4"));
- return qc;
- }
- }
- class java_director_MyQuux extends Quux {
- public java_director_MyQuux(String arg) {
- super(arg);
- }
- public String director_method() {
- return "java_director_MyQuux:" + member();
- }
- }
- class java_director_JavaExceptionTest extends JavaExceptionTest {
- public java_director_JavaExceptionTest() {
- super();
- }
- public void etest() throws Exception {
- super.etest();
- }
- }