Recommit r2510 now that mac build bot issue has been fixed.



git-svn-id: http://skia.googlecode.com/svn/trunk@2521 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tests/GLInterfaceValidation.cpp b/tests/GLInterfaceValidation.cpp
new file mode 100755
index 0000000..758f303
--- /dev/null
+++ b/tests/GLInterfaceValidation.cpp
@@ -0,0 +1,63 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Test.h"
+#include "SkNativeGLContext.h"
+#include "SkMesaGLContext.h"
+
+static void GLInterfaceValidationTest(skiatest::Reporter* reporter) {
+    typedef const GrGLInterface* (*interfaceFactory)();
+    struct {
+       interfaceFactory fFactory;
+       const char* fName;
+    } interfaceFactories[] = {
+        {GrGLCreateNativeInterface, "Native"},
+#if SK_MESA
+        {GrGLCreateMesaInterface, "Mesa"},
+#endif
+    };
+
+    // On some platforms GrGLCreateNativeInterface will fail unless an OpenGL
+    // context has been created. Also, preserve the current context that may
+    // be in use by outer test harness.
+    SkNativeGLContext::AutoContextRestore nglacr;
+    SkNativeGLContext nglctx;
+    static const int gBOGUS_SIZE = 16;
+    bool nativeContextInit = nglctx.init(gBOGUS_SIZE, gBOGUS_SIZE);
+    REPORTER_ASSERT(reporter, nativeContextInit);
+    if (!nativeContextInit) {
+        return;
+    }
+#if SK_MESA
+    // We must have a current OSMesa context to initialize an OSMesa
+    // GrGLInterface
+    SkMesaGLContext::AutoContextRestore mglacr;
+    SkMesaGLContext mglctx;
+    bool mesaContextInit = mglctx.init(gBOGUS_SIZE, gBOGUS_SIZE);
+    REPORTER_ASSERT(reporter, mesaContextInit);
+    if(!mesaContextInit) {
+        return;
+    }
+#endif
+
+    SkAutoTUnref<const GrGLInterface> iface;
+    for (size_t i = 0; i < SK_ARRAY_COUNT(interfaceFactories); ++i) {
+        iface.reset(interfaceFactories[i].fFactory());
+        REPORTER_ASSERT(reporter, NULL != iface.get());
+        if (iface.get()) {
+            REPORTER_ASSERT(reporter, iface.get()->validate(kOpenGL_Shaders_GrEngine));
+        }
+    }
+}
+
+
+#include "TestClassDef.h"
+DEFINE_TESTCLASS("GLInterfaceValidation",
+                 GLInterfaceValidationTestClass,
+                 GLInterfaceValidationTest)
+