Move ANGLETest back in test_utils, leaving a proxy header for Chromium
BUG=angleproject:892
Change-Id: Ibd494813be87e996096077d6e208cc92461b8f49
Reviewed-on: https://chromium-review.googlesource.com/271154
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/tests/test_utils/ANGLETest.h b/src/tests/test_utils/ANGLETest.h
new file mode 100644
index 0000000..09e35ab
--- /dev/null
+++ b/src/tests/test_utils/ANGLETest.h
@@ -0,0 +1,115 @@
+//
+// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#ifndef ANGLE_TESTS_ANGLE_TEST_H_
+#define ANGLE_TESTS_ANGLE_TEST_H_
+
+#include <gtest/gtest.h>
+#include <algorithm>
+
+#include "angle_gl.h"
+#include "angle_test_configs.h"
+#include "common/angleutils.h"
+#include "shader_utils.h"
+
+#define EXPECT_GL_ERROR(err) EXPECT_EQ((err), glGetError())
+#define EXPECT_GL_NO_ERROR() EXPECT_GL_ERROR(GL_NO_ERROR)
+
+#define ASSERT_GL_ERROR(err) ASSERT_EQ((err), glGetError())
+#define ASSERT_GL_NO_ERROR() ASSERT_GL_ERROR(GL_NO_ERROR)
+
+#define EXPECT_EGL_ERROR(err) EXPECT_EQ((err), eglGetError())
+#define EXPECT_EGL_SUCCESS() EXPECT_EGL_ERROR(EGL_SUCCESS)
+
+#define ASSERT_EGL_ERROR(err) ASSERT_EQ((err), eglGetError())
+#define ASSERT_EGL_SUCCESS() ASSERT_EGL_ERROR(EGL_SUCCESS)
+
+#define EXPECT_PIXEL_EQ(x, y, r, g, b, a) \
+{ \
+ GLubyte pixel[4]; \
+ glReadPixels((x), (y), 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel); \
+ EXPECT_GL_NO_ERROR(); \
+ EXPECT_EQ((r), pixel[0]); \
+ EXPECT_EQ((g), pixel[1]); \
+ EXPECT_EQ((b), pixel[2]); \
+ EXPECT_EQ((a), pixel[3]); \
+}
+
+#define EXPECT_PIXEL_NEAR(x, y, r, g, b, a, abs_error) \
+{ \
+ GLubyte pixel[4]; \
+ glReadPixels((x), (y), 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel); \
+ EXPECT_GL_NO_ERROR(); \
+ EXPECT_NEAR((r), pixel[0], abs_error); \
+ EXPECT_NEAR((g), pixel[1], abs_error); \
+ EXPECT_NEAR((b), pixel[2], abs_error); \
+ EXPECT_NEAR((a), pixel[3], abs_error); \
+}
+
+class EGLWindow;
+class OSWindow;
+
+class ANGLETest : public ::testing::TestWithParam<angle::PlatformParameters>
+{
+ protected:
+ ANGLETest();
+ ~ANGLETest();
+
+ public:
+ static bool InitTestWindow();
+ static bool DestroyTestWindow();
+ static bool ResizeWindow(int width, int height);
+ static void SetWindowVisible(bool isVisible);
+
+ protected:
+ virtual void SetUp();
+ virtual void TearDown();
+
+ virtual void swapBuffers();
+
+ static void drawQuad(GLuint program, const std::string& positionAttribName, GLfloat quadDepth, GLfloat quadScale = 1.0f);
+ static GLuint compileShader(GLenum type, const std::string &source);
+ static bool extensionEnabled(const std::string &extName);
+
+ void setWindowWidth(int width);
+ void setWindowHeight(int height);
+ void setConfigRedBits(int bits);
+ void setConfigGreenBits(int bits);
+ void setConfigBlueBits(int bits);
+ void setConfigAlphaBits(int bits);
+ void setConfigDepthBits(int bits);
+ void setConfigStencilBits(int bits);
+ void setMultisampleEnabled(bool enabled);
+
+ int getClientVersion() const;
+
+ EGLWindow *getEGLWindow() const;
+ int getWindowWidth() const;
+ int getWindowHeight() const;
+ bool isMultisampleEnabled() const;
+
+ bool isIntel() const;
+ bool isAMD() const;
+ bool isNVidia() const;
+ EGLint getPlatformRenderer() const;
+
+ private:
+ bool createEGLContext();
+ bool destroyEGLContext();
+
+ EGLWindow *mEGLWindow;
+
+ static OSWindow *mOSWindow;
+};
+
+class ANGLETestEnvironment : public testing::Environment
+{
+ public:
+ virtual void SetUp();
+ virtual void TearDown();
+};
+
+#endif // ANGLE_TESTS_ANGLE_TEST_H_