JOGL v2.6.0-rc-20250706
JOGL, High-Performance Graphics Binding for Java™ (public API).
TestAWT02WindowClosing.java
Go to the documentation of this file.
1/**
2 * Copyright 2010 JogAmp Community. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without modification, are
5 * permitted provided that the following conditions are met:
6 *
7 * 1. Redistributions of source code must retain the above copyright notice, this list of
8 * conditions and the following disclaimer.
9 *
10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
11 * of conditions and the following disclaimer in the documentation and/or other materials
12 * provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
15 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 *
24 * The views and conclusions contained in the software and documentation are those of the
25 * authors and should not be interpreted as representing official policies, either expressed
26 * or implied, of JogAmp Community.
27 */
28
29package com.jogamp.opengl.test.junit.jogl.awt;
30
31import com.jogamp.opengl.test.junit.util.UITestCase;
32
33import java.awt.*;
34import java.awt.event.*;
35
36import org.junit.Assert;
37import org.junit.Assume;
38import org.junit.Test;
39import org.junit.FixMethodOrder;
40import org.junit.runners.MethodSorters;
41
42@FixMethodOrder(MethodSorters.NAME_ASCENDING)
43public class TestAWT02WindowClosing extends UITestCase {
44
45 static long durationPerTest = 200; // ms
46
47 @Test
48 public void test01WindowClosing() throws InterruptedException {
49 final Frame frame = new Frame();
50 final ClosingWindowAdapter closingWindowAdapter = new ClosingWindowAdapter(frame);
51 frame.addWindowListener(closingWindowAdapter);
52 try {
53 javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
54 public void run() {
55 frame.setSize(500, 500);
56 frame.setVisible(true);
57 }});
58 } catch (final Throwable t) {
59 t.printStackTrace();
60 Assume.assumeNoException(t);
61 }
62
63 Thread.sleep(durationPerTest);
64 if(!closingWindowAdapter.closingCalled) {
65 // programatically issue windowClosing
66 final Toolkit tk = Toolkit.getDefaultToolkit();
67 final EventQueue evtQ = tk.getSystemEventQueue();
68 evtQ.postEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
69 Thread.sleep(200);
70 }
71 Assert.assertEquals(true, closingWindowAdapter.closingCalled);
72 }
73
74 static class ClosingWindowAdapter extends WindowAdapter {
75 boolean closingCalled = false;
76 Frame frame;
77 public ClosingWindowAdapter(final Frame frame) {
78 this.frame = frame;
79 }
80 public void windowClosing(final WindowEvent ev) {
81 System.out.println("windowClosing() called ..");
82 closingCalled = true;
83 frame.dispose();
84 }
85 }
86
87 static int atoi(final String a) {
88 int i=0;
89 try {
90 i = Integer.parseInt(a);
91 } catch (final Exception ex) { ex.printStackTrace(); }
92 return i;
93 }
94
95 public static void main(final String args[]) {
96 for(int i=0; i<args.length; i++) {
97 if(args[i].equals("-time")) {
98 durationPerTest = atoi(args[++i]);
99 }
100 }
101 System.out.println("durationPerTest: "+durationPerTest);
102 org.junit.runner.JUnitCore.main(TestAWT02WindowClosing.class.getName());
103 }
104}