diff options
Diffstat (limited to 'tests/src/com/android/gallery3d/ui/GLCanvasTest.java')
-rw-r--r-- | tests/src/com/android/gallery3d/ui/GLCanvasTest.java | 364 |
1 files changed, 0 insertions, 364 deletions
diff --git a/tests/src/com/android/gallery3d/ui/GLCanvasTest.java b/tests/src/com/android/gallery3d/ui/GLCanvasTest.java index ca34d7c3c..72ccbfb96 100644 --- a/tests/src/com/android/gallery3d/ui/GLCanvasTest.java +++ b/tests/src/com/android/gallery3d/ui/GLCanvasTest.java @@ -360,370 +360,6 @@ public class GLCanvasTest extends TestCase { } @SmallTest - public void testClipRect() { - // The test is currently broken, waiting for the fix - // new ClipRectTest().run(); - } - - private static class ClipRectTest extends GLStub { - int mX, mY, mWidth, mHeight; - - @Override - public void glScissor(int x, int y, int width, int height) { - mX = x; - mY = 100 - y - height; // flip in Y direction - mWidth = width; - mHeight = height; - } - - private void assertClipRect(int x, int y, int width, int height) { - assertEquals(x, mX); - assertEquals(y, mY); - assertEquals(width, mWidth); - assertEquals(height, mHeight); - } - - private void assertEmptyClipRect() { - assertEquals(0, mWidth); - assertEquals(0, mHeight); - } - - void run() { - GLCanvas canvas = new GLCanvasImpl(this); - canvas.setSize(100, 100); - canvas.save(); - assertClipRect(0, 0, 100, 100); - - assertTrue(canvas.clipRect(10, 10, 70, 70)); - canvas.save(); - assertClipRect(10, 10, 60, 60); - - assertTrue(canvas.clipRect(30, 30, 90, 90)); - canvas.save(); - assertClipRect(30, 30, 40, 40); - - assertTrue(canvas.clipRect(40, 40, 60, 90)); - assertClipRect(40, 40, 20, 30); - - assertFalse(canvas.clipRect(30, 30, 70, 40)); - assertEmptyClipRect(); - assertFalse(canvas.clipRect(0, 0, 100, 100)); - assertEmptyClipRect(); - - canvas.restore(); - assertClipRect(30, 30, 40, 40); - - canvas.restore(); - assertClipRect(10, 10, 60, 60); - - canvas.restore(); - assertClipRect(0, 0, 100, 100); - - canvas.translate(10, 20, 30); - assertTrue(canvas.clipRect(10, 10, 70, 70)); - canvas.save(); - assertClipRect(20, 30, 60, 60); - } - } - - @SmallTest - public void testSaveRestore() { - new SaveRestoreTest().run(); - } - - private static class SaveRestoreTest extends GLStub { - int mX, mY, mWidth, mHeight; - - @Override - public void glScissor(int x, int y, int width, int height) { - mX = x; - mY = 100 - y - height; // flip in Y direction - mWidth = width; - mHeight = height; - } - - private void assertClipRect(int x, int y, int width, int height) { - assertEquals(x, mX); - assertEquals(y, mY); - assertEquals(width, mWidth); - assertEquals(height, mHeight); - } - - void run() { - GLCanvas canvas = new GLCanvasImpl(this); - canvas.setSize(100, 100); - - canvas.setAlpha(0.7f); - assertTrue(canvas.clipRect(10, 10, 70, 70)); - - canvas.save(canvas.SAVE_FLAG_CLIP); - canvas.setAlpha(0.6f); - assertTrue(canvas.clipRect(30, 30, 90, 90)); - - canvas.save(canvas.SAVE_FLAG_CLIP | canvas.SAVE_FLAG_ALPHA); - canvas.setAlpha(0.5f); - assertTrue(canvas.clipRect(40, 40, 60, 90)); - - assertEquals(0.5f, canvas.getAlpha()); - assertClipRect(40, 40, 20, 30); - - canvas.restore(); // now both clipping rect and alpha are restored. - assertEquals(0.6f, canvas.getAlpha()); - assertClipRect(30, 30, 40, 40); - - canvas.restore(); // now only clipping rect is restored. - - canvas.save(0); - canvas.save(0); - canvas.restore(); - canvas.restore(); - - assertEquals(0.6f, canvas.getAlpha()); - assertTrue(canvas.clipRect(10, 10, 60, 60)); - } - } - - @SmallTest - public void testDrawTexture() { - new DrawTextureTest().run(); - new DrawTextureMixedTest().run(); - } - - private static class MyTexture extends BasicTexture { - boolean mIsOpaque; - int mBindCalled; - - MyTexture(GLCanvas canvas, int id, boolean isOpaque) { - super(canvas, id, STATE_LOADED); - setSize(1, 1); - mIsOpaque = isOpaque; - } - - @Override - protected boolean onBind(GLCanvas canvas) { - mBindCalled++; - return true; - } - - public boolean isOpaque() { - return mIsOpaque; - } - } - - private static class DrawTextureTest extends GLMock { - int mDrawTexiOESCalled; - int mDrawArrayCalled; - int[] mResult = new int[4]; - - @Override - public void glDrawTexiOES(int x, int y, int z, - int width, int height) { - mDrawTexiOESCalled++; - } - - @Override - public void glDrawArrays(int mode, int first, int count) { - assertNotNull(mGLVertexPointer); - assertEquals(GL10.GL_TRIANGLE_STRIP, mode); - assertEquals(4, count); - mGLVertexPointer.bindByteBuffer(); - - double[] coord = new double[4]; - mGLVertexPointer.getArrayElement(first, coord); - mResult[0] = (int) coord[0]; - mResult[1] = (int) coord[1]; - mGLVertexPointer.getArrayElement(first + 1, coord); - mResult[2] = (int) coord[0]; - mResult[3] = (int) coord[1]; - mDrawArrayCalled++; - } - - void run() { - GLCanvas canvas = new GLCanvasImpl(this); - canvas.setSize(400, 300); - MyTexture texture = new MyTexture(canvas, 42, false); // non-opaque - MyTexture texture_o = new MyTexture(canvas, 47, true); // opaque - - // Draw a non-opaque texture - canvas.drawTexture(texture, 100, 200, 300, 400); - assertEquals(42, mGLBindTextureId); - assertEquals(GL_REPLACE, getTexEnvi(GL_TEXTURE_ENV_MODE)); - assertPremultipliedBlending(this); - assertFalse(mGLStencilEnabled); - - // Draw an opaque texture - canvas.drawTexture(texture_o, 100, 200, 300, 400); - assertEquals(47, mGLBindTextureId); - assertEquals(GL_REPLACE, getTexEnvi(GL_TEXTURE_ENV_MODE)); - assertFalse(mGLBlendEnabled); - - // Draw a non-opaque texture with alpha = 0.5 - canvas.setAlpha(0.5f); - canvas.drawTexture(texture, 100, 200, 300, 400); - assertEquals(42, mGLBindTextureId); - assertEquals(0x80808080, mGLColor); - assertEquals(GL_MODULATE, getTexEnvi(GL_TEXTURE_ENV_MODE)); - assertPremultipliedBlending(this); - assertFalse(mGLStencilEnabled); - - // Draw an non-opaque texture with overriden alpha = 1 - canvas.drawTexture(texture, 100, 200, 300, 400, 1f); - assertEquals(42, mGLBindTextureId); - assertEquals(GL_REPLACE, getTexEnvi(GL_TEXTURE_ENV_MODE)); - assertPremultipliedBlending(this); - - // Draw an opaque texture with overriden alpha = 1 - canvas.drawTexture(texture_o, 100, 200, 300, 400, 1f); - assertEquals(47, mGLBindTextureId); - assertEquals(GL_REPLACE, getTexEnvi(GL_TEXTURE_ENV_MODE)); - assertFalse(mGLBlendEnabled); - - // Draw an opaque texture with overridden alpha = 0.25 - canvas.drawTexture(texture_o, 100, 200, 300, 400, 0.25f); - assertEquals(47, mGLBindTextureId); - assertEquals(0x40404040, mGLColor); - assertEquals(GL_MODULATE, getTexEnvi(GL_TEXTURE_ENV_MODE)); - assertPremultipliedBlending(this); - - // Draw an opaque texture with overridden alpha = 0.125 - // but with some rotation so it will use DrawArray. - canvas.save(); - canvas.rotate(30, 0, 0, 1); - canvas.drawTexture(texture_o, 100, 200, 300, 400, 0.125f); - canvas.restore(); - assertEquals(47, mGLBindTextureId); - assertEquals(0x20202020, mGLColor); - assertEquals(GL_MODULATE, getTexEnvi(GL_TEXTURE_ENV_MODE)); - assertPremultipliedBlending(this); - - // We have drawn seven textures above. - assertEquals(1, mDrawArrayCalled); - assertEquals(6, mDrawTexiOESCalled); - - // translate and scale does not affect whether we - // can use glDrawTexiOES, but rotate may. - canvas.translate(10, 20, 30); - canvas.drawTexture(texture, 100, 200, 300, 400); - assertEquals(7, mDrawTexiOESCalled); - - canvas.scale(10, 20, 30); - canvas.drawTexture(texture, 100, 200, 300, 400); - assertEquals(8, mDrawTexiOESCalled); - - canvas.rotate(90, 1, 2, 3); - canvas.drawTexture(texture, 100, 200, 300, 400); - assertEquals(8, mDrawTexiOESCalled); - - canvas.rotate(-90, 1, 2, 3); - canvas.drawTexture(texture, 100, 200, 300, 400); - assertEquals(9, mDrawTexiOESCalled); - - canvas.rotate(180, 0, 0, 1); - canvas.drawTexture(texture, 100, 200, 300, 400); - assertEquals(9, mDrawTexiOESCalled); - - canvas.rotate(180, 0, 0, 1); - canvas.drawTexture(texture, 100, 200, 300, 400); - assertEquals(10, mDrawTexiOESCalled); - - assertEquals(3, mDrawArrayCalled); - - assertTrue(texture.isLoaded(canvas)); - texture.recycle(); - assertFalse(texture.isLoaded(canvas)); - canvas.deleteRecycledResources(); - - assertTrue(texture_o.isLoaded(canvas)); - texture_o.recycle(); - assertFalse(texture_o.isLoaded(canvas)); - } - } - - private static class DrawTextureMixedTest extends GLMock { - - boolean mTexture2DEnabled0, mTexture2DEnabled1; - int mBindTexture0; - int mBindTexture1; - - @Override - public void glEnable(int cap) { - if (cap == GL_TEXTURE_2D) { - texture2DEnable(true); - } - } - - @Override - public void glDisable(int cap) { - if (cap == GL_TEXTURE_2D) { - texture2DEnable(false); - } - } - - private void texture2DEnable(boolean enable) { - if (mGLActiveTexture == GL_TEXTURE0) { - mTexture2DEnabled0 = enable; - } else if (mGLActiveTexture == GL_TEXTURE1) { - mTexture2DEnabled1 = enable; - } else { - fail(); - } - } - - @Override - public void glTexEnvfv(int target, int pname, float[] params, int offset) { - if (target == GL_TEXTURE_ENV && pname == GL_TEXTURE_ENV_COLOR) { - assertEquals(0.5f, params[offset + 3]); - } - } - - @Override - public void glBindTexture(int target, int texture) { - if (target == GL_TEXTURE_2D) { - if (mGLActiveTexture == GL_TEXTURE0) { - mBindTexture0 = texture; - } else if (mGLActiveTexture == GL_TEXTURE1) { - mBindTexture1 = texture; - } else { - fail(); - } - } - } - - void run() { - GLCanvas canvas = new GLCanvasImpl(this); - canvas.setSize(400, 300); - MyTexture from = new MyTexture(canvas, 42, false); // non-opaque - MyTexture to = new MyTexture(canvas, 47, true); // opaque - - canvas.drawMixed(from, to, 0.5f, 100, 200, 300, 400); - assertEquals(42, mBindTexture0); - assertEquals(47, mBindTexture1); - assertTrue(mTexture2DEnabled0); - assertFalse(mTexture2DEnabled1); - - assertEquals(GL_COMBINE, getTexEnvi(GL_TEXTURE1, GL_TEXTURE_ENV_MODE)); - assertEquals(GL_INTERPOLATE, getTexEnvi(GL_TEXTURE1, GL_COMBINE_RGB)); - assertEquals(GL_INTERPOLATE, getTexEnvi(GL_TEXTURE1, GL_COMBINE_ALPHA)); - assertEquals(GL_CONSTANT, getTexEnvi(GL_TEXTURE1, GL_SRC2_RGB)); - assertEquals(GL_CONSTANT, getTexEnvi(GL_TEXTURE1, GL_SRC2_ALPHA)); - assertEquals(GL_SRC_ALPHA, getTexEnvi(GL_TEXTURE1, GL_OPERAND2_RGB)); - assertEquals(GL_SRC_ALPHA, getTexEnvi(GL_TEXTURE1, GL_OPERAND2_ALPHA)); - - assertEquals(GL_REPLACE, getTexEnvi(GL_TEXTURE0, GL_TEXTURE_ENV_MODE)); - - assertFalse(mGLBlendEnabled); - - canvas.drawMixed(from, to, 0, 100, 200, 300, 400); - assertEquals(GL_REPLACE, getTexEnvi(GL_TEXTURE0, GL_TEXTURE_ENV_MODE)); - assertEquals(42, mBindTexture0); - - canvas.drawMixed(from, to, 1, 100, 200, 300, 400); - assertEquals(GL_REPLACE, getTexEnvi(GL_TEXTURE0, GL_TEXTURE_ENV_MODE)); - assertEquals(47, mBindTexture0); - } - } - - @SmallTest public void testGetGLInstance() { GL11 glStub = new GLStub(); GLCanvas canvas = new GLCanvasImpl(glStub); |