diff options
Diffstat (limited to 'src/junit/com/jogamp/test')
7 files changed, 315 insertions, 23 deletions
diff --git a/src/junit/com/jogamp/test/junit/jogl/acore/DumpVersion.java b/src/junit/com/jogamp/test/junit/jogl/acore/DumpVersion.java index 802936d2c..5bba65002 100644 --- a/src/junit/com/jogamp/test/junit/jogl/acore/DumpVersion.java +++ b/src/junit/com/jogamp/test/junit/jogl/acore/DumpVersion.java @@ -39,6 +39,7 @@ import org.junit.AfterClass; import org.junit.Test; import javax.media.opengl.*; +import com.jogamp.common.os.Platform; import java.io.IOException; @@ -47,6 +48,9 @@ public class DumpVersion implements GLEventListener { public void init(GLAutoDrawable drawable) { GL gl = drawable.getGL(); + System.err.println(Thread.currentThread()+" Platform: " + Platform.getOS() + " (os), " + Platform.getArch() + " (arch)"); + System.err.println(Thread.currentThread()+" Platform: littleEndian " + Platform.isLittleEndian() + ", 32Bit "+Platform.is32Bit() + ", a-ptr bit-size "+Platform.getPointerSizeInBits()); + System.err.println(Thread.currentThread()+" Platform: JavaSE " + Platform.isJavaSE()); System.err.println(Thread.currentThread()+" GL Profile " + gl.getGLProfile()); System.err.println(Thread.currentThread()+" CTX VERSION " + gl.getContext().getGLVersion()); System.err.println(Thread.currentThread()+" GL " + gl); 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/jogl/demos/gl2/gears/TestGearsAWT.java b/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsAWT.java index 21487c519..2df3f0de9 100755 --- a/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsAWT.java +++ b/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsAWT.java @@ -95,7 +95,9 @@ public class TestGearsAWT { Assert.assertNotNull(animator); animator.stop(); + Assert.assertEquals(false, animator.isAnimating()); frame.setVisible(false); + Assert.assertEquals(false, frame.isVisible()); frame.remove(glCanvas); frame.dispose(); frame=null; 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" } ); + } + +} |