From 24485ead77a368ae3b77108248e067ad1f44ef0a Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Thu, 31 Oct 2013 04:32:28 +0100 Subject: Test Rename: Add Bug 729 / Bug 849 to Bug 816 Unit Test Names - Allowing a better unit test lookup --- .../acore/TestSharedContextWithJTabbedPaneAWT.java | 3 +- .../jogl/awt/TestBug816OSXCALayerPos03aAWT.java | 165 -------------------- .../awt/TestBug816OSXCALayerPos03aB729AWT.java | 165 ++++++++++++++++++++ .../jogl/awt/TestBug816OSXCALayerPos03bAWT.java | 171 -------------------- .../awt/TestBug816OSXCALayerPos03bB849AWT.java | 171 ++++++++++++++++++++ .../jogl/awt/TestBug816OSXCALayerPos03cAWT.java | 173 --------------------- .../awt/TestBug816OSXCALayerPos03cB849AWT.java | 173 +++++++++++++++++++++ 7 files changed, 510 insertions(+), 511 deletions(-) delete mode 100644 src/test/com/jogamp/opengl/test/junit/jogl/awt/TestBug816OSXCALayerPos03aAWT.java create mode 100644 src/test/com/jogamp/opengl/test/junit/jogl/awt/TestBug816OSXCALayerPos03aB729AWT.java delete mode 100644 src/test/com/jogamp/opengl/test/junit/jogl/awt/TestBug816OSXCALayerPos03bAWT.java create mode 100644 src/test/com/jogamp/opengl/test/junit/jogl/awt/TestBug816OSXCALayerPos03bB849AWT.java delete mode 100644 src/test/com/jogamp/opengl/test/junit/jogl/awt/TestBug816OSXCALayerPos03cAWT.java create mode 100644 src/test/com/jogamp/opengl/test/junit/jogl/awt/TestBug816OSXCALayerPos03cB849AWT.java (limited to 'src/test/com/jogamp/opengl') diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextWithJTabbedPaneAWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextWithJTabbedPaneAWT.java index 71993a023..d6a6f7bed 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextWithJTabbedPaneAWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextWithJTabbedPaneAWT.java @@ -202,7 +202,6 @@ public class TestSharedContextWithJTabbedPaneAWT extends UITestCase { static long durationPerTest = 500*4; // ms static boolean manual = false; - static volatile boolean shouldStop = false; @Test public void test01() throws InterruptedException, InvocationTargetException { @@ -216,7 +215,7 @@ public class TestSharedContextWithJTabbedPaneAWT extends UITestCase { } }); if(manual) { - for(long w=durationPerTest; !shouldStop && w>0; w-=100) { + for(long w=durationPerTest; w>0; w-=100) { Thread.sleep(100); } } else { diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/awt/TestBug816OSXCALayerPos03aAWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/awt/TestBug816OSXCALayerPos03aAWT.java deleted file mode 100644 index 3451b75cc..000000000 --- a/src/test/com/jogamp/opengl/test/junit/jogl/awt/TestBug816OSXCALayerPos03aAWT.java +++ /dev/null @@ -1,165 +0,0 @@ -/** - * Copyright 2013 JogAmp Community. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of JogAmp Community. - */ - -package com.jogamp.opengl.test.junit.jogl.awt; - -import java.awt.BorderLayout; -import java.awt.Checkbox; -import java.awt.Frame; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.lang.reflect.InvocationTargetException; - -import javax.media.opengl.GLCapabilities; -import javax.media.opengl.GLProfile; -import javax.media.opengl.awt.GLCanvas; - -import org.junit.Assert; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.runners.MethodSorters; - -import com.jogamp.newt.event.TraceWindowAdapter; -import com.jogamp.newt.event.awt.AWTWindowAdapter; -import com.jogamp.opengl.test.junit.jogl.demos.es2.GearsES2; -import com.jogamp.opengl.test.junit.util.AWTRobotUtil; -import com.jogamp.opengl.test.junit.util.MiscUtils; -import com.jogamp.opengl.test.junit.util.QuitAdapter; -import com.jogamp.opengl.test.junit.util.UITestCase; -import com.jogamp.opengl.util.Animator; - -/** - * AWT Frame BorderLayout w/ Checkbox North, GLCanvas Center. - *

- * Checkbox toggles GLCanvas visibility state. - *

- *

- * Validates bugs: - *

- *

- *

- * Diff. OSX CALayer positioning w/ java6, [7uxx..7u40[, and >= 7u40 - *

- */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class TestBug816OSXCALayerPos03aAWT extends UITestCase { - static long duration = 1600; // ms - static int width=640, height=480; - - @Test - public void test() throws InterruptedException, InvocationTargetException { - final GLCapabilities caps = new GLCapabilities(getGLP()); - - final Frame frame = new Frame("TestBug816OSXCALayerPos03aAWT"); - Assert.assertNotNull(frame); - - final GLCanvas glCanvas1 = new GLCanvas(caps); - Assert.assertNotNull(glCanvas1); - glCanvas1.addGLEventListener(new GearsES2(1)); - - final Animator animator = new Animator(); - animator.add(glCanvas1); - QuitAdapter quitAdapter = new QuitAdapter(); - - new AWTWindowAdapter(new TraceWindowAdapter(quitAdapter)).addTo(frame); - - // Create a check box that hides / shows canvas - final Checkbox checkbox = new Checkbox("Visible canvas", true); - checkbox.addItemListener(new ItemListener() { - public void itemStateChanged(ItemEvent ev) { - glCanvas1.setVisible(checkbox.getState()); - System.out.println("Canvas visible: "+glCanvas1.isVisible()); - if( glCanvas1.isVisible() ) { - frame.validate(); // take care of resized frame while hidden - } - } - }); - - // Build a GUI that displays canvas and check box - frame.setLayout(new BorderLayout()); - frame.add(glCanvas1, BorderLayout.CENTER); - frame.add(checkbox, BorderLayout.NORTH); - - javax.swing.SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - frame.setSize(width, height); - frame.setVisible(true); - }}); - Assert.assertEquals(true, AWTRobotUtil.waitForVisible(frame, true)); - Assert.assertEquals(true, AWTRobotUtil.waitForRealized(glCanvas1, true)); - - animator.start(); - Assert.assertTrue(animator.isStarted()); - Assert.assertTrue(animator.isAnimating()); - animator.setUpdateFPSFrames(60, System.err); - - final long t0 = System.currentTimeMillis(); - long t1 = t0; - while(!quitAdapter.shouldQuit() && t1 - t0 < duration) { - Thread.sleep(100); - t1 = System.currentTimeMillis(); - } - - Assert.assertNotNull(frame); - Assert.assertNotNull(glCanvas1); - - Assert.assertNotNull(animator); - animator.stop(); - Assert.assertFalse(animator.isAnimating()); - Assert.assertFalse(animator.isStarted()); - - javax.swing.SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - frame.setVisible(false); - }}); - Assert.assertEquals(false, frame.isVisible()); - javax.swing.SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - frame.remove(glCanvas1); - frame.dispose(); - }}); - } - - static GLProfile getGLP() { - return GLProfile.getMaxProgrammableCore(true); - } - - public static void main(String args[]) { - for(int i=0; i + * Checkbox toggles GLCanvas visibility state. + *

+ *

+ * Validates bugs: + *

+ *

+ *

+ * Diff. OSX CALayer positioning w/ java6, [7uxx..7u40[, and >= 7u40 + *

+ */ +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class TestBug816OSXCALayerPos03aB729AWT extends UITestCase { + static long duration = 1600; // ms + static int width=640, height=480; + + @Test + public void test() throws InterruptedException, InvocationTargetException { + final GLCapabilities caps = new GLCapabilities(getGLP()); + + final Frame frame = new Frame("TestBug816OSXCALayerPos03aAWT"); + Assert.assertNotNull(frame); + + final GLCanvas glCanvas1 = new GLCanvas(caps); + Assert.assertNotNull(glCanvas1); + glCanvas1.addGLEventListener(new GearsES2(1)); + + final Animator animator = new Animator(); + animator.add(glCanvas1); + QuitAdapter quitAdapter = new QuitAdapter(); + + new AWTWindowAdapter(new TraceWindowAdapter(quitAdapter)).addTo(frame); + + // Create a check box that hides / shows canvas + final Checkbox checkbox = new Checkbox("Visible canvas", true); + checkbox.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent ev) { + glCanvas1.setVisible(checkbox.getState()); + System.out.println("Canvas visible: "+glCanvas1.isVisible()); + if( glCanvas1.isVisible() ) { + frame.validate(); // take care of resized frame while hidden + } + } + }); + + // Build a GUI that displays canvas and check box + frame.setLayout(new BorderLayout()); + frame.add(glCanvas1, BorderLayout.CENTER); + frame.add(checkbox, BorderLayout.NORTH); + + javax.swing.SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + frame.setSize(width, height); + frame.setVisible(true); + }}); + Assert.assertEquals(true, AWTRobotUtil.waitForVisible(frame, true)); + Assert.assertEquals(true, AWTRobotUtil.waitForRealized(glCanvas1, true)); + + animator.start(); + Assert.assertTrue(animator.isStarted()); + Assert.assertTrue(animator.isAnimating()); + animator.setUpdateFPSFrames(60, System.err); + + final long t0 = System.currentTimeMillis(); + long t1 = t0; + while(!quitAdapter.shouldQuit() && t1 - t0 < duration) { + Thread.sleep(100); + t1 = System.currentTimeMillis(); + } + + Assert.assertNotNull(frame); + Assert.assertNotNull(glCanvas1); + + Assert.assertNotNull(animator); + animator.stop(); + Assert.assertFalse(animator.isAnimating()); + Assert.assertFalse(animator.isStarted()); + + javax.swing.SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + frame.setVisible(false); + }}); + Assert.assertEquals(false, frame.isVisible()); + javax.swing.SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + frame.remove(glCanvas1); + frame.dispose(); + }}); + } + + static GLProfile getGLP() { + return GLProfile.getMaxProgrammableCore(true); + } + + public static void main(String args[]) { + for(int i=0; i - * Checkbox toggles GLCanvas's parent panel's visibility state. - *

- *

- * Validates bugs: - *

    - *
  • Bug 816: OSX CALayer Positioning Bug
  • - *
  • Bug 729: OSX CALayer shall honor the Component's visibility state
  • - *
  • Bug 849: AWT GLAutoDrawables (JAWTWindow) shall honor it's parent visibility state
  • - *
- *

- *

- * Diff. OSX CALayer positioning w/ java6, [7uxx..7u40[, and >= 7u40 - *

- */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class TestBug816OSXCALayerPos03bAWT extends UITestCase { - static long duration = 1600; // ms - static int width=640, height=480; - - @Test - public void test() throws InterruptedException, InvocationTargetException { - final GLCapabilities caps = new GLCapabilities(getGLP()); - - final Frame frame = new Frame("TestBug816OSXCALayerPos03bAWT"); - Assert.assertNotNull(frame); - - final GLCanvas glCanvas1 = new GLCanvas(caps); - Assert.assertNotNull(glCanvas1); - glCanvas1.addGLEventListener(new GearsES2(1)); - // Put it in a panel - final Panel panel = new Panel(new GridLayout(1, 1)); - panel.add(glCanvas1); - - final Animator animator = new Animator(); - animator.add(glCanvas1); - QuitAdapter quitAdapter = new QuitAdapter(); - - new AWTWindowAdapter(new TraceWindowAdapter(quitAdapter)).addTo(frame); - - // Create a check box that hides / shows canvas - final Checkbox checkbox = new Checkbox("Visible canvas", true); - checkbox.addItemListener(new ItemListener() { - public void itemStateChanged(ItemEvent ev) { - panel.setVisible(checkbox.getState()); - System.out.println("Visible: [panel "+panel.isVisible()+", canvas "+glCanvas1.isVisible()+"]; Displayable: [panel "+panel.isDisplayable()+", canvas "+glCanvas1.isDisplayable()+"]"); - if( panel.isVisible() ) { - frame.validate(); // take care of resized frame while hidden - } - } - }); - - // Build a GUI that displays canvas and check box - frame.setLayout(new BorderLayout()); - frame.add(panel, BorderLayout.CENTER); - frame.add(checkbox, BorderLayout.NORTH); - - javax.swing.SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - frame.setSize(width, height); - frame.setVisible(true); - }}); - Assert.assertEquals(true, AWTRobotUtil.waitForVisible(frame, true)); - Assert.assertEquals(true, AWTRobotUtil.waitForRealized(glCanvas1, true)); - - animator.start(); - Assert.assertTrue(animator.isStarted()); - Assert.assertTrue(animator.isAnimating()); - animator.setUpdateFPSFrames(60, System.err); - - final long t0 = System.currentTimeMillis(); - long t1 = t0; - while(!quitAdapter.shouldQuit() && t1 - t0 < duration) { - Thread.sleep(100); - t1 = System.currentTimeMillis(); - } - - Assert.assertNotNull(frame); - Assert.assertNotNull(glCanvas1); - - Assert.assertNotNull(animator); - animator.stop(); - Assert.assertFalse(animator.isAnimating()); - Assert.assertFalse(animator.isStarted()); - - javax.swing.SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - frame.setVisible(false); - }}); - Assert.assertEquals(false, frame.isVisible()); - javax.swing.SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - frame.remove(panel); - frame.dispose(); - }}); - } - - static GLProfile getGLP() { - return GLProfile.getMaxProgrammableCore(true); - } - - public static void main(String args[]) { - for(int i=0; i + * Checkbox toggles GLCanvas's parent panel's visibility state. + *

+ *

+ * Validates bugs: + *

    + *
  • Bug 816: OSX CALayer Positioning Bug
  • + *
  • Bug 729: OSX CALayer shall honor the Component's visibility state
  • + *
  • Bug 849: AWT GLAutoDrawables (JAWTWindow) shall honor it's parent visibility state
  • + *
+ *

+ *

+ * Diff. OSX CALayer positioning w/ java6, [7uxx..7u40[, and >= 7u40 + *

+ */ +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class TestBug816OSXCALayerPos03bB849AWT extends UITestCase { + static long duration = 1600; // ms + static int width=640, height=480; + + @Test + public void test() throws InterruptedException, InvocationTargetException { + final GLCapabilities caps = new GLCapabilities(getGLP()); + + final Frame frame = new Frame("TestBug816OSXCALayerPos03bAWT"); + Assert.assertNotNull(frame); + + final GLCanvas glCanvas1 = new GLCanvas(caps); + Assert.assertNotNull(glCanvas1); + glCanvas1.addGLEventListener(new GearsES2(1)); + // Put it in a panel + final Panel panel = new Panel(new GridLayout(1, 1)); + panel.add(glCanvas1); + + final Animator animator = new Animator(); + animator.add(glCanvas1); + QuitAdapter quitAdapter = new QuitAdapter(); + + new AWTWindowAdapter(new TraceWindowAdapter(quitAdapter)).addTo(frame); + + // Create a check box that hides / shows canvas + final Checkbox checkbox = new Checkbox("Visible canvas", true); + checkbox.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent ev) { + panel.setVisible(checkbox.getState()); + System.out.println("Visible: [panel "+panel.isVisible()+", canvas "+glCanvas1.isVisible()+"]; Displayable: [panel "+panel.isDisplayable()+", canvas "+glCanvas1.isDisplayable()+"]"); + if( panel.isVisible() ) { + frame.validate(); // take care of resized frame while hidden + } + } + }); + + // Build a GUI that displays canvas and check box + frame.setLayout(new BorderLayout()); + frame.add(panel, BorderLayout.CENTER); + frame.add(checkbox, BorderLayout.NORTH); + + javax.swing.SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + frame.setSize(width, height); + frame.setVisible(true); + }}); + Assert.assertEquals(true, AWTRobotUtil.waitForVisible(frame, true)); + Assert.assertEquals(true, AWTRobotUtil.waitForRealized(glCanvas1, true)); + + animator.start(); + Assert.assertTrue(animator.isStarted()); + Assert.assertTrue(animator.isAnimating()); + animator.setUpdateFPSFrames(60, System.err); + + final long t0 = System.currentTimeMillis(); + long t1 = t0; + while(!quitAdapter.shouldQuit() && t1 - t0 < duration) { + Thread.sleep(100); + t1 = System.currentTimeMillis(); + } + + Assert.assertNotNull(frame); + Assert.assertNotNull(glCanvas1); + + Assert.assertNotNull(animator); + animator.stop(); + Assert.assertFalse(animator.isAnimating()); + Assert.assertFalse(animator.isStarted()); + + javax.swing.SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + frame.setVisible(false); + }}); + Assert.assertEquals(false, frame.isVisible()); + javax.swing.SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + frame.remove(panel); + frame.dispose(); + }}); + } + + static GLProfile getGLP() { + return GLProfile.getMaxProgrammableCore(true); + } + + public static void main(String args[]) { + for(int i=0; i - * Checkbox toggles GLCanvas's parent jpanel's visibility state. - *

- *

- * Validates bugs: - *

    - *
  • Bug 816: OSX CALayer Positioning Bug
  • - *
  • Bug 729: OSX CALayer shall honor the Component's visibility state
  • - *
  • Bug 849: AWT GLAutoDrawables (JAWTWindow) shall honor it's parent visibility state
  • - *
- *

- *

- * Diff. OSX CALayer positioning w/ java6, [7uxx..7u40[, and >= 7u40 - *

- */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class TestBug816OSXCALayerPos03cAWT extends UITestCase { - static long duration = 1600; // ms - static int width=640, height=480; - - @Test - public void test() throws InterruptedException, InvocationTargetException { - final GLCapabilities caps = new GLCapabilities(getGLP()); - - final JFrame frame = new JFrame("TestBug816OSXCALayerPos03cAWT"); - Assert.assertNotNull(frame); - final Container framePane = frame.getContentPane(); - - final GLCanvas glCanvas1 = new GLCanvas(caps); - Assert.assertNotNull(glCanvas1); - glCanvas1.addGLEventListener(new GearsES2(1)); - // Put it in a panel - final JPanel panel = new JPanel(new GridLayout(1, 1)); - panel.add(glCanvas1); - - final Animator animator = new Animator(); - animator.add(glCanvas1); - QuitAdapter quitAdapter = new QuitAdapter(); - - new AWTWindowAdapter(new TraceWindowAdapter(quitAdapter)).addTo(frame); - - // Create a check box that hides / shows canvas - final JCheckBox checkbox = new JCheckBox("Visible canvas", true); - checkbox.addItemListener(new ItemListener() { - public void itemStateChanged(ItemEvent ev) { - panel.setVisible(checkbox.getSelectedObjects()!=null); - System.out.println("Visible: [panel "+panel.isVisible()+", canvas "+glCanvas1.isVisible()+"]; Displayable: [panel "+panel.isDisplayable()+", canvas "+glCanvas1.isDisplayable()+"]"); - if( panel.isVisible() ) { - frame.validate(); // take care of resized frame while hidden - } - } - }); - - // Build a GUI that displays canvas and check box - framePane.setLayout(new BorderLayout()); - framePane.add(panel, BorderLayout.CENTER); - framePane.add(checkbox, BorderLayout.NORTH); - - javax.swing.SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - frame.setSize(width, height); - frame.setVisible(true); - }}); - Assert.assertEquals(true, AWTRobotUtil.waitForVisible(frame, true)); - Assert.assertEquals(true, AWTRobotUtil.waitForRealized(glCanvas1, true)); - - animator.start(); - Assert.assertTrue(animator.isStarted()); - Assert.assertTrue(animator.isAnimating()); - animator.setUpdateFPSFrames(60, System.err); - - final long t0 = System.currentTimeMillis(); - long t1 = t0; - while(!quitAdapter.shouldQuit() && t1 - t0 < duration) { - Thread.sleep(100); - t1 = System.currentTimeMillis(); - } - - Assert.assertNotNull(frame); - Assert.assertNotNull(glCanvas1); - - Assert.assertNotNull(animator); - animator.stop(); - Assert.assertFalse(animator.isAnimating()); - Assert.assertFalse(animator.isStarted()); - - javax.swing.SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - frame.setVisible(false); - }}); - Assert.assertEquals(false, frame.isVisible()); - javax.swing.SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - framePane.remove(panel); - frame.dispose(); - }}); - } - - static GLProfile getGLP() { - return GLProfile.getMaxProgrammableCore(true); - } - - public static void main(String args[]) { - for(int i=0; i + * Checkbox toggles GLCanvas's parent jpanel's visibility state. + *

+ *

+ * Validates bugs: + *

    + *
  • Bug 816: OSX CALayer Positioning Bug
  • + *
  • Bug 729: OSX CALayer shall honor the Component's visibility state
  • + *
  • Bug 849: AWT GLAutoDrawables (JAWTWindow) shall honor it's parent visibility state
  • + *
+ *

+ *

+ * Diff. OSX CALayer positioning w/ java6, [7uxx..7u40[, and >= 7u40 + *

+ */ +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class TestBug816OSXCALayerPos03cB849AWT extends UITestCase { + static long duration = 1600; // ms + static int width=640, height=480; + + @Test + public void test() throws InterruptedException, InvocationTargetException { + final GLCapabilities caps = new GLCapabilities(getGLP()); + + final JFrame frame = new JFrame("TestBug816OSXCALayerPos03cAWT"); + Assert.assertNotNull(frame); + final Container framePane = frame.getContentPane(); + + final GLCanvas glCanvas1 = new GLCanvas(caps); + Assert.assertNotNull(glCanvas1); + glCanvas1.addGLEventListener(new GearsES2(1)); + // Put it in a panel + final JPanel panel = new JPanel(new GridLayout(1, 1)); + panel.add(glCanvas1); + + final Animator animator = new Animator(); + animator.add(glCanvas1); + QuitAdapter quitAdapter = new QuitAdapter(); + + new AWTWindowAdapter(new TraceWindowAdapter(quitAdapter)).addTo(frame); + + // Create a check box that hides / shows canvas + final JCheckBox checkbox = new JCheckBox("Visible canvas", true); + checkbox.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent ev) { + panel.setVisible(checkbox.getSelectedObjects()!=null); + System.out.println("Visible: [panel "+panel.isVisible()+", canvas "+glCanvas1.isVisible()+"]; Displayable: [panel "+panel.isDisplayable()+", canvas "+glCanvas1.isDisplayable()+"]"); + if( panel.isVisible() ) { + frame.validate(); // take care of resized frame while hidden + } + } + }); + + // Build a GUI that displays canvas and check box + framePane.setLayout(new BorderLayout()); + framePane.add(panel, BorderLayout.CENTER); + framePane.add(checkbox, BorderLayout.NORTH); + + javax.swing.SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + frame.setSize(width, height); + frame.setVisible(true); + }}); + Assert.assertEquals(true, AWTRobotUtil.waitForVisible(frame, true)); + Assert.assertEquals(true, AWTRobotUtil.waitForRealized(glCanvas1, true)); + + animator.start(); + Assert.assertTrue(animator.isStarted()); + Assert.assertTrue(animator.isAnimating()); + animator.setUpdateFPSFrames(60, System.err); + + final long t0 = System.currentTimeMillis(); + long t1 = t0; + while(!quitAdapter.shouldQuit() && t1 - t0 < duration) { + Thread.sleep(100); + t1 = System.currentTimeMillis(); + } + + Assert.assertNotNull(frame); + Assert.assertNotNull(glCanvas1); + + Assert.assertNotNull(animator); + animator.stop(); + Assert.assertFalse(animator.isAnimating()); + Assert.assertFalse(animator.isStarted()); + + javax.swing.SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + frame.setVisible(false); + }}); + Assert.assertEquals(false, frame.isVisible()); + javax.swing.SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + framePane.remove(panel); + frame.dispose(); + }}); + } + + static GLProfile getGLP() { + return GLProfile.getMaxProgrammableCore(true); + } + + public static void main(String args[]) { + for(int i=0; i