aboutsummaryrefslogtreecommitdiffstats
path: root/src/junit
diff options
context:
space:
mode:
Diffstat (limited to 'src/junit')
-rwxr-xr-xsrc/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java27
-rwxr-xr-xsrc/junit/com/jogamp/test/junit/newt/TestGLWindows01NEWT.java28
-rwxr-xr-xsrc/junit/com/jogamp/test/junit/newt/TestParenting01AWT.java76
-rwxr-xr-xsrc/junit/com/jogamp/test/junit/newt/TestParenting01NEWT.java13
-rwxr-xr-xsrc/junit/com/jogamp/test/junit/newt/TestParentingAWT.java188
5 files changed, 309 insertions, 23 deletions
diff --git a/src/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java b/src/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java
index 48388d4e9..16f42053b 100755
--- a/src/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java
+++ b/src/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java
@@ -47,6 +47,9 @@ import com.jogamp.newt.*;
import java.io.IOException;
public class TestGLProfile01NEWT {
+ static {
+ GLProfile.initSingleton();
+ }
static GLProfile glp;
@BeforeClass
@@ -93,7 +96,7 @@ public class TestGLProfile01NEWT {
}
@Test
- public void test02GLProfileMaxProgrammable() {
+ public void test03GLProfileMaxProgrammable() {
// Assuming at least one programmable profile is available
GLProfile glp = GLProfile.getMaxProgrammable();
System.out.println("GLProfile <static> getMaxProgrammable(): "+glp);
@@ -118,6 +121,28 @@ public class TestGLProfile01NEWT {
dumpVersion(glp);
}
+ @Test
+ public void test04GLProfileGL2ES1() {
+ if(!GLProfile.isGL2ES1Available()) {
+ System.out.println("GLProfile GL2ES1 n/a");
+ return;
+ }
+ GLProfile glp = GLProfile.getGL2ES1();
+ System.out.println("GLProfile <static> GL2ES1: "+glp);
+ dumpVersion(glp);
+ }
+
+ @Test
+ public void test05GLProfileGL2ES2() {
+ if(!GLProfile.isGL2ES2Available()) {
+ System.out.println("GLProfile GL2ES2 n/a");
+ return;
+ }
+ GLProfile glp = GLProfile.getGL2ES2();
+ System.out.println("GLProfile <static> GL2ES2: "+glp);
+ dumpVersion(glp);
+ }
+
protected void dumpVersion(GLProfile glp) {
GLCapabilities caps = new GLCapabilities(glp);
GLWindow glWindow = GLWindow.create(caps, false);
diff --git a/src/junit/com/jogamp/test/junit/newt/TestGLWindows01NEWT.java b/src/junit/com/jogamp/test/junit/newt/TestGLWindows01NEWT.java
index 9aec605be..4fd7744db 100755
--- a/src/junit/com/jogamp/test/junit/newt/TestGLWindows01NEWT.java
+++ b/src/junit/com/jogamp/test/junit/newt/TestGLWindows01NEWT.java
@@ -180,13 +180,23 @@ public class TestGLWindows01NEWT {
public void testWindowDecor03TwoWin() throws InterruptedException {
GLCapabilities caps = new GLCapabilities(glp);
Assert.assertNotNull(caps);
- Display display = NewtFactory.createDisplay(null); // local display
- Assert.assertNotNull(display);
- Screen screen = NewtFactory.createScreen(display, 0); // screen 0
- Assert.assertNotNull(screen);
- GLWindow window1 = createWindow(screen, caps, width, height, true /* onscreen */, false /* undecorated */);
- GLWindow window2 = createWindow(screen, caps, width, height, true /* onscreen */, false /* undecorated */);
+ Display display1 = NewtFactory.createDisplay(null); // local display
+ Assert.assertNotNull(display1);
+ Display display2 = NewtFactory.createDisplay(null); // local display
+ Assert.assertNotNull(display2);
+ Assert.assertEquals(display1, display2); // must be equal: same thread - same display
+
+ Screen screen1 = NewtFactory.createScreen(display1, 0); // screen 0
+ Assert.assertNotNull(screen1);
+ GLWindow window1 = createWindow(screen1, caps, width, height, true /* onscreen */, false /* undecorated */);
+ Assert.assertNotNull(window1);
+
+ Screen screen2 = NewtFactory.createScreen(display2, 0); // screen 0
+ Assert.assertNotNull(screen2);
+ GLWindow window2 = createWindow(screen2, caps, width, height, true /* onscreen */, false /* undecorated */);
+ Assert.assertNotNull(window2);
+
Animator animator1 = new Animator(window1);
animator1.start();
Animator animator2 = new Animator(window2);
@@ -194,9 +204,13 @@ public class TestGLWindows01NEWT {
while(animator1.isAnimating() && animator1.getDuration()<duration) {
Thread.sleep(100);
}
+
animator2.stop();
+ Assert.assertEquals(false, animator2.isAnimating());
+ destroyWindow(window2, true);
+
animator1.stop();
- destroyWindow(window2, false);
+ Assert.assertEquals(false, animator1.isAnimating());
destroyWindow(window1, true);
}
diff --git a/src/junit/com/jogamp/test/junit/newt/TestParenting01AWT.java b/src/junit/com/jogamp/test/junit/newt/TestParenting01AWT.java
index 87d0288b3..2c695f788 100755
--- a/src/junit/com/jogamp/test/junit/newt/TestParenting01AWT.java
+++ b/src/junit/com/jogamp/test/junit/newt/TestParenting01AWT.java
@@ -94,7 +94,7 @@ public class TestParenting01AWT {
GLEventListener demo1 = new RedSquare();
setDemoFields(demo1, glWindow1, false);
glWindow1.addGLEventListener(demo1);
- glWindow1.setSize(600, 300);
+ // glWindow1.setSize(600, 300);
NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1);
Assert.assertNotNull(newtCanvasAWT);
@@ -106,7 +106,7 @@ public class TestParenting01AWT {
Assert.assertNotNull(frame);
frame.add(newtCanvasAWT);
frame.setSize(width, height);
- frame.pack();
+ // frame.pack();
// visible test
frame.setVisible(true);
@@ -127,14 +127,14 @@ public class TestParenting01AWT {
Assert.assertEquals(false, glWindow1.isDestroyed());
frame.remove(newtCanvasAWT);
- Assert.assertNull(glWindow1.getParentNativeWindow());
+ // Assert.assertNull(glWindow1.getParentNativeWindow());
Assert.assertEquals(false, glWindow1.isDestroyed());
frame.dispose();
Assert.assertEquals(false, glWindow1.isDestroyed());
glWindow1.destroy(true);
- Assert.assertEquals(true, glWindow1.isDestroyed());
+ //Assert.assertEquals(true, glWindow1.isDestroyed());
}
@Test
@@ -152,7 +152,7 @@ public class TestParenting01AWT {
GLEventListener demo1 = new RedSquare();
setDemoFields(demo1, glWindow1, false);
glWindow1.addGLEventListener(demo1);
- glWindow1.setSize(600, 300);
+ // glWindow1.setSize(600, 300);
NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1);
Assert.assertNotNull(newtCanvasAWT);
@@ -169,7 +169,7 @@ public class TestParenting01AWT {
frame.add(newtCanvasAWT);
Assert.assertEquals(newtCanvasAWT.getNativeWindow(),glWindow1.getParentNativeWindow());
- frame.pack();
+ // frame.pack();
Animator animator1 = new Animator(glWindow1);
animator1.start();
@@ -184,6 +184,43 @@ public class TestParenting01AWT {
}
@Test
+ public void testWindowParenting02CreateVisibleDestroy3Odd() throws InterruptedException {
+ int x = 0;
+ int y = 0;
+
+ NEWTEventFiFo eventFifo = new NEWTEventFiFo();
+
+ GLWindow glWindow1 = GLWindow.create(glCaps);
+ GLEventListener demo1 = new RedSquare();
+ setDemoFields(demo1, glWindow1, false);
+ glWindow1.addGLEventListener(demo1);
+ // glWindow1.setSize(600, 300);
+
+ NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1);
+
+ Frame frame = new Frame("AWT Parent Frame");
+ Assert.assertNotNull(frame);
+ frame.setSize(width, height);
+
+ // visible test
+ frame.setVisible(true);
+
+ frame.add(newtCanvasAWT);
+ // frame.pack();
+
+ Animator animator1 = new Animator(glWindow1);
+ animator1.start();
+ while(animator1.isAnimating() && animator1.getDuration()<durationPerTest) {
+ Thread.sleep(100);
+ }
+
+ Assert.assertEquals(true, animator1.isAnimating()); // !!!
+
+ frame.dispose();
+ glWindow1.destroy(true);
+ }
+
+ @Test
public void testWindowParenting03ReparentNewtWin2Top() throws InterruptedException {
int x = 0;
int y = 0;
@@ -194,7 +231,7 @@ public class TestParenting01AWT {
GLEventListener demo1 = new RedSquare();
setDemoFields(demo1, glWindow1, false);
glWindow1.addGLEventListener(demo1);
- glWindow1.setSize(600, 300);
+ // glWindow1.setSize(600, 300);
NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1);
@@ -205,7 +242,7 @@ public class TestParenting01AWT {
frame.add(newtCanvasAWT);
Assert.assertEquals(newtCanvasAWT.getNativeWindow(),glWindow1.getParentNativeWindow());
- frame.pack();
+ // frame.pack();
Animator animator1 = new Animator(glWindow1);
animator1.start();
@@ -228,6 +265,9 @@ public class TestParenting01AWT {
state++;
}
+ animator1.stop();
+ Assert.assertEquals(false, animator1.isAnimating());
+
frame.dispose();
glWindow1.destroy(true);
}
@@ -243,7 +283,7 @@ public class TestParenting01AWT {
GLEventListener demo1 = new RedSquare();
setDemoFields(demo1, glWindow1, false);
glWindow1.addGLEventListener(demo1);
- glWindow1.setSize(600, 300);
+ // glWindow1.setSize(600, 300);
NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1);
@@ -259,7 +299,7 @@ public class TestParenting01AWT {
frame.add(newtCanvasAWT, BorderLayout.CENTER);
Assert.assertEquals(newtCanvasAWT.getNativeWindow(),glWindow1.getParentNativeWindow());
- frame.pack();
+ // frame.pack();
Animator animator1 = new Animator(glWindow1);
animator1.start();
@@ -282,6 +322,9 @@ public class TestParenting01AWT {
state++;
}
+ animator1.stop();
+ Assert.assertEquals(false, animator1.isAnimating());
+
frame.dispose();
glWindow1.destroy(true);
}
@@ -293,11 +336,11 @@ public class TestParenting01AWT {
NEWTEventFiFo eventFifo = new NEWTEventFiFo();
- GLWindow glWindow1 = GLWindow.create(glCaps);
+ GLWindow glWindow1 = GLWindow.create(glCaps, true);
GLEventListener demo1 = new RedSquare();
setDemoFields(demo1, glWindow1, false);
glWindow1.addGLEventListener(demo1);
- glWindow1.setSize(600, 300);
+ // glWindow1.setSize(600, 300);
NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1);
@@ -323,7 +366,7 @@ public class TestParenting01AWT {
frame1.add(newtCanvasAWT, BorderLayout.CENTER);
Assert.assertEquals(newtCanvasAWT.getNativeWindow(),glWindow1.getParentNativeWindow());
- frame1.pack();
+ // frame1.pack();
Animator animator1 = new Animator(glWindow1);
animator1.start();
@@ -335,17 +378,20 @@ public class TestParenting01AWT {
case 0:
frame1.remove(newtCanvasAWT);
frame2.add(newtCanvasAWT, BorderLayout.CENTER);
- frame2.pack();
+ //frame2.pack();
break;
case 1:
frame2.remove(newtCanvasAWT);
frame1.add(newtCanvasAWT, BorderLayout.CENTER);
- frame1.pack();
+ //frame1.pack();
break;
}
state++;
}
+ animator1.stop();
+ Assert.assertEquals(false, animator1.isAnimating());
+
frame1.dispose();
frame2.dispose();
glWindow1.destroy(true);
diff --git a/src/junit/com/jogamp/test/junit/newt/TestParenting01NEWT.java b/src/junit/com/jogamp/test/junit/newt/TestParenting01NEWT.java
index 37de52139..f87ce1111 100755
--- a/src/junit/com/jogamp/test/junit/newt/TestParenting01NEWT.java
+++ b/src/junit/com/jogamp/test/junit/newt/TestParenting01NEWT.java
@@ -196,10 +196,16 @@ public class TestParenting01NEWT {
state++;
}
animator1.stop();
+ Assert.assertEquals(false, animator1.isAnimating());
animator2.stop();
+ Assert.assertEquals(false, animator2.isAnimating());
glWindow1.destroy(true);
+ Assert.assertEquals(true, glWindow1.isDestroyed());
+ Assert.assertEquals(false, glWindow2.isDestroyed());
glWindow2.destroy(true);
+ Assert.assertEquals(true, glWindow1.isDestroyed());
+ Assert.assertEquals(true, glWindow2.isDestroyed());
}
@Test
@@ -249,9 +255,16 @@ public class TestParenting01NEWT {
state++;
}
animator1.stop();
+ Assert.assertEquals(false, animator1.isAnimating());
animator2.stop();
+ Assert.assertEquals(false, animator2.isAnimating());
glWindow1.destroy(true);
+ Assert.assertEquals(true, glWindow1.isDestroyed());
+ Assert.assertEquals(true, glWindow2.isDestroyed());
+ glWindow2.destroy(true);
+ Assert.assertEquals(true, glWindow1.isDestroyed());
+ Assert.assertEquals(true, glWindow2.isDestroyed());
}
public static void setDemoFields(GLEventListener demo, GLWindow glWindow, boolean debug) {
diff --git a/src/junit/com/jogamp/test/junit/newt/TestParentingAWT.java b/src/junit/com/jogamp/test/junit/newt/TestParentingAWT.java
new file mode 100755
index 000000000..c42599810
--- /dev/null
+++ b/src/junit/com/jogamp/test/junit/newt/TestParentingAWT.java
@@ -0,0 +1,188 @@
+/*
+ * Copyright (c) 2010 Sven Gothel. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistribution 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.
+ *
+ * Neither the name Sven Gothel or the names of
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * This software is provided "AS IS," without a warranty of any kind. ALL
+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+ * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
+ * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
+ * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
+ * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+ * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
+ * SVEN GOTHEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
+package com.jogamp.test.junit.newt;
+
+import java.lang.reflect.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Test;
+
+import java.awt.Button;
+import java.awt.BorderLayout;
+import java.awt.Canvas;
+import java.awt.Frame;
+import java.awt.Dimension;
+
+import javax.media.opengl.*;
+import javax.media.nativewindow.*;
+
+import com.jogamp.opengl.util.Animator;
+import com.jogamp.newt.*;
+import com.jogamp.newt.event.*;
+import com.jogamp.newt.opengl.*;
+import com.jogamp.newt.awt.NewtCanvasAWT;
+
+import java.io.IOException;
+
+import com.jogamp.test.junit.util.*;
+import com.jogamp.test.junit.jogl.demos.es1.RedSquare;
+import com.jogamp.test.junit.jogl.demos.gl2.gears.Gears;
+
+public class TestParentingAWT {
+ static int width, height;
+ static long durationPerTest = 800;
+ static long waitReparent = 0;
+ static GLCapabilities glCaps;
+
+ @BeforeClass
+ public static void initClass() {
+ width = 640;
+ height = 480;
+ glCaps = new GLCapabilities(null);
+ }
+
+ @Test
+ public void testWindowParenting05ReparentAWTWinHopFrame2Frame() throws InterruptedException {
+ int x = 0;
+ int y = 0;
+
+ NEWTEventFiFo eventFifo = new NEWTEventFiFo();
+
+ GLWindow glWindow1 = GLWindow.create(glCaps, true);
+ GLEventListener demo1 = new RedSquare();
+ setDemoFields(demo1, glWindow1, false);
+ glWindow1.addGLEventListener(demo1);
+
+ NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1);
+
+ Frame frame1 = new Frame("AWT Parent Frame");
+ frame1.setLayout(new BorderLayout());
+ frame1.add(new Button("North"), BorderLayout.NORTH);
+ frame1.add(new Button("South"), BorderLayout.SOUTH);
+ frame1.add(new Button("East"), BorderLayout.EAST);
+ frame1.add(new Button("West"), BorderLayout.WEST);
+ frame1.setSize(width, height);
+ frame1.setLocation(0, 0);
+ frame1.setVisible(true);
+
+ Frame frame2 = new Frame("AWT Parent Frame");
+ frame2.setLayout(new BorderLayout());
+ frame2.add(new Button("North"), BorderLayout.NORTH);
+ frame2.add(new Button("South"), BorderLayout.SOUTH);
+ frame2.add(new Button("East"), BorderLayout.EAST);
+ frame2.add(new Button("West"), BorderLayout.WEST);
+ frame2.setSize(width, height);
+ frame2.setLocation(640, 480);
+ frame2.setVisible(true);
+
+ frame1.add(newtCanvasAWT, BorderLayout.CENTER);
+ Assert.assertEquals(newtCanvasAWT.getNativeWindow(),glWindow1.getParentNativeWindow());
+
+ Animator animator1 = new Animator(glWindow1);
+ animator1.start();
+
+ int state = 0;
+ while(animator1.isAnimating() && animator1.getDuration()<3*durationPerTest) {
+ Thread.sleep(durationPerTest);
+ switch(state) {
+ case 0:
+ frame1.remove(newtCanvasAWT);
+ frame2.add(newtCanvasAWT, BorderLayout.CENTER);
+ break;
+ case 1:
+ frame2.remove(newtCanvasAWT);
+ frame1.add(newtCanvasAWT, BorderLayout.CENTER);
+ break;
+ }
+ state++;
+ }
+
+ animator1.stop();
+ Assert.assertEquals(false, animator1.isAnimating());
+
+ frame1.dispose();
+ frame2.dispose();
+ glWindow1.destroy(true);
+ }
+
+ public static void setDemoFields(GLEventListener demo, GLWindow glWindow, boolean debug) {
+ Assert.assertNotNull(demo);
+ Assert.assertNotNull(glWindow);
+ Window window = glWindow.getInnerWindow();
+ if(debug) {
+ MiscUtils.setFieldIfExists(demo, "glDebug", true);
+ MiscUtils.setFieldIfExists(demo, "glTrace", true);
+ }
+ if(!MiscUtils.setFieldIfExists(demo, "window", window)) {
+ MiscUtils.setFieldIfExists(demo, "glWindow", glWindow);
+ }
+ }
+
+ static int atoi(String a) {
+ int i=0;
+ try {
+ durationPerTest = Integer.parseInt(a);
+ } catch (Exception ex) { ex.printStackTrace(); }
+ return i;
+ }
+
+ public static void main(String args[]) throws IOException {
+ for(int i=0; i<args.length; i++) {
+ if(args[i].equals("-time")) {
+ durationPerTest = atoi(args[++i]);
+ } else if(args[i].equals("-wait")) {
+ waitReparent = atoi(args[++i]);
+ }
+ }
+ String tstname = TestParentingAWT.class.getName();
+ org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(new String[] {
+ tstname,
+ "filtertrace=true",
+ "haltOnError=false",
+ "haltOnFailure=false",
+ "showoutput=true",
+ "outputtoformatters=true",
+ "logfailedtests=true",
+ "logtestlistenerevents=true",
+ "formatter=org.apache.tools.ant.taskdefs.optional.junit.PlainJUnitResultFormatter",
+ "formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,TEST-"+tstname+".xml" } );
+ }
+
+}