/*
 * Copyright © 2012 Intel Corporation
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice (including the next
 * paragraph) shall be included in all copies or substantial portions of the
 * Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 */

#include <gtest/gtest.h>
#include <GL/gl.h>

extern "C" {
#include "glapi/glapi.h"
#include "glapi/glapitable.h"
}

struct name_offset {
   const char *name;
   int offset;
};

extern const struct name_offset linux_gl_abi[];

TEST(GetProcAddress, ABIOffsetByName)
{
   /* 408 functions have had their locations in the dispatch table set since
    * the dawn of time.  Verify that all of these functions are at the correct
    * locations.
    */
   for (unsigned i = 0; linux_gl_abi[i].name != NULL; i++) {
      EXPECT_EQ(linux_gl_abi[i].offset,
		_glapi_get_proc_offset(linux_gl_abi[i].name))
	 << "function name: " << linux_gl_abi[i].name;
   }
}

TEST(GetProcAddress, TableBigEnoughForABI)
{
   /* FINISHME: This should check that the dispatch table is large enough to
    * FINISHME: hold all of the unique functions for OpenGL 1.2, OpenGL ES
    * FINISHME: 1.1, and OpenGL ES 2.0.
    */
   EXPECT_LT(408u, _glapi_get_dispatch_table_size());
}

const struct name_offset linux_gl_abi[] = {
   { "glNewList", 0 },
   { "glEndList", 1 },
   { "glCallList", 2 },
   { "glCallLists", 3 },
   { "glDeleteLists", 4 },
   { "glGenLists", 5 },
   { "glListBase", 6 },
   { "glBegin", 7 },
   { "glBitmap", 8 },
   { "glColor3b", 9 },
   { "glColor3bv", 10 },
   { "glColor3d", 11 },
   { "glColor3dv", 12 },
   { "glColor3f", 13 },
   { "glColor3fv", 14 },
   { "glColor3i", 15 },
   { "glColor3iv", 16 },
   { "glColor3s", 17 },
   { "glColor3sv", 18 },
   { "glColor3ub", 19 },
   { "glColor3ubv", 20 },
   { "glColor3ui", 21 },
   { "glColor3uiv", 22 },
   { "glColor3us", 23 },
   { "glColor3usv", 24 },
   { "glColor4b", 25 },
   { "glColor4bv", 26 },
   { "glColor4d", 27 },
   { "glColor4dv", 28 },
   { "glColor4f", 29 },
   { "glColor4fv", 30 },
   { "glColor4i", 31 },
   { "glColor4iv", 32 },
   { "glColor4s", 33 },
   { "glColor4sv", 34 },
   { "glColor4ub", 35 },
   { "glColor4ubv", 36 },
   { "glColor4ui", 37 },
   { "glColor4uiv", 38 },
   { "glColor4us", 39 },
   { "glColor4usv", 40 },
   { "glEdgeFlag", 41 },
   { "glEdgeFlagv", 42 },
   { "glEnd", 43 },
   { "glIndexd", 44 },
   { "glIndexdv", 45 },
   { "glIndexf", 46 },
   { "glIndexfv", 47 },
   { "glIndexi", 48 },
   { "glIndexiv", 49 },
   { "glIndexs", 50 },
   { "glIndexsv", 51 },
   { "glNormal3b", 52 },
   { "glNormal3bv", 53 },
   { "glNormal3d", 54 },
   { "glNormal3dv", 55 },
   { "glNormal3f", 56 },
   { "glNormal3fv", 57 },
   { "glNormal3i", 58 },
   { "glNormal3iv", 59 },
   { "glNormal3s", 60 },
   { "glNormal3sv", 61 },
   { "glRasterPos2d", 62 },
   { "glRasterPos2dv", 63 },
   { "glRasterPos2f", 64 },
   { "glRasterPos2fv", 65 },
   { "glRasterPos2i", 66 },
   { "glRasterPos2iv", 67 },
   { "glRasterPos2s", 68 },
   { "glRasterPos2sv", 69 },
   { "glRasterPos3d", 70 },
   { "glRasterPos3dv", 71 },
   { "glRasterPos3f", 72 },
   { "glRasterPos3fv", 73 },
   { "glRasterPos3i", 74 },
   { "glRasterPos3iv", 75 },
   { "glRasterPos3s", 76 },
   { "glRasterPos3sv", 77 },
   { "glRasterPos4d", 78 },
   { "glRasterPos4dv", 79 },
   { "glRasterPos4f", 80 },
   { "glRasterPos4fv", 81 },
   { "glRasterPos4i", 82 },
   { "glRasterPos4iv", 83 },
   { "glRasterPos4s", 84 },
   { "glRasterPos4sv", 85 },
   { "glRectd", 86 },
   { "glRectdv", 87 },
   { "glRectf", 88 },
   { "glRectfv", 89 },
   { "glRecti", 90 },
   { "glRectiv", 91 },
   { "glRects", 92 },
   { "glRectsv", 93 },
   { "glTexCoord1d", 94 },
   { "glTexCoord1dv", 95 },
   { "glTexCoord1f", 96 },
   { "glTexCoord1fv", 97 },
   { "glTexCoord1i", 98 },
   { "glTexCoord1iv", 99 },
   { "glTexCoord1s", 100 },
   { "glTexCoord1sv", 101 },
   { "glTexCoord2d", 102 },
   { "glTexCoord2dv", 103 },
   { "glTexCoord2f", 104 },
   { "glTexCoord2fv", 105 },
   { "glTexCoord2i", 106 },
   { "glTexCoord2iv", 107 },
   { "glTexCoord2s", 108 },
   { "glTexCoord2sv", 109 },
   { "glTexCoord3d", 110 },
   { "glTexCoord3dv", 111 },
   { "glTexCoord3f", 112 },
   { "glTexCoord3fv", 113 },
   { "glTexCoord3i", 114 },
   { "glTexCoord3iv", 115 },
   { "glTexCoord3s", 116 },
   { "glTexCoord3sv", 117 },
   { "glTexCoord4d", 118 },
   { "glTexCoord4dv", 119 },
   { "glTexCoord4f", 120 },
   { "glTexCoord4fv", 121 },
   { "glTexCoord4i", 122 },
   { "glTexCoord4iv", 123 },
   { "glTexCoord4s", 124 },
   { "glTexCoord4sv", 125 },
   { "glVertex2d", 126 },
   { "glVertex2dv", 127 },
   { "glVertex2f", 128 },
   { "glVertex2fv", 129 },
   { "glVertex2i", 130 },
   { "glVertex2iv", 131 },
   { "glVertex2s", 132 },
   { "glVertex2sv", 133 },
   { "glVertex3d", 134 },
   { "glVertex3dv", 135 },
   { "glVertex3f", 136 },
   { "glVertex3fv", 137 },
   { "glVertex3i", 138 },
   { "glVertex3iv", 139 },
   { "glVertex3s", 140 },
   { "glVertex3sv", 141 },
   { "glVertex4d", 142 },
   { "glVertex4dv", 143 },
   { "glVertex4f", 144 },
   { "glVertex4fv", 145 },
   { "glVertex4i", 146 },
   { "glVertex4iv", 147 },
   { "glVertex4s", 148 },
   { "glVertex4sv", 149 },
   { "glClipPlane", 150 },
   { "glColorMaterial", 151 },
   { "glCullFace", 152 },
   { "glFogf", 153 },
   { "glFogfv", 154 },
   { "glFogi", 155 },
   { "glFogiv", 156 },
   { "glFrontFace", 157 },
   { "glHint", 158 },
   { "glLightf", 159 },
   { "glLightfv", 160 },
   { "glLighti", 161 },
   { "glLightiv", 162 },
   { "glLightModelf", 163 },
   { "glLightModelfv", 164 },
   { "glLightModeli", 165 },
   { "glLightModeliv", 166 },
   { "glLineStipple", 167 },
   { "glLineWidth", 168 },
   { "glMaterialf", 169 },
   { "glMaterialfv", 170 },
   { "glMateriali", 171 },
   { "glMaterialiv", 172 },
   { "glPointSize", 173 },
   { "glPolygonMode", 174 },
   { "glPolygonStipple", 175 },
   { "glScissor", 176 },
   { "glShadeModel", 177 },
   { "glTexParameterf", 178 },
   { "glTexParameterfv", 179 },
   { "glTexParameteri", 180 },
   { "glTexParameteriv", 181 },
   { "glTexImage1D", 182 },
   { "glTexImage2D", 183 },
   { "glTexEnvf", 184 },
   { "glTexEnvfv", 185 },
   { "glTexEnvi", 186 },
   { "glTexEnviv", 187 },
   { "glTexGend", 188 },
   { "glTexGendv", 189 },
   { "glTexGenf", 190 },
   { "glTexGenfv", 191 },
   { "glTexGeni", 192 },
   { "glTexGeniv", 193 },
   { "glFeedbackBuffer", 194 },
   { "glSelectBuffer", 195 },
   { "glRenderMode", 196 },
   { "glInitNames", 197 },
   { "glLoadName", 198 },
   { "glPassThrough", 199 },
   { "glPopName", 200 },
   { "glPushName", 201 },
   { "glDrawBuffer", 202 },
   { "glClear", 203 },
   { "glClearAccum", 204 },
   { "glClearIndex", 205 },
   { "glClearColor", 206 },
   { "glClearStencil", 207 },
   { "glClearDepth", 208 },
   { "glStencilMask", 209 },
   { "glColorMask", 210 },
   { "glDepthMask", 211 },
   { "glIndexMask", 212 },
   { "glAccum", 213 },
   { "glDisable", 214 },
   { "glEnable", 215 },
   { "glFinish", 216 },
   { "glFlush", 217 },
   { "glPopAttrib", 218 },
   { "glPushAttrib", 219 },
   { "glMap1d", 220 },
   { "glMap1f", 221 },
   { "glMap2d", 222 },
   { "glMap2f", 223 },
   { "glMapGrid1d", 224 },
   { "glMapGrid1f", 225 },
   { "glMapGrid2d", 226 },
   { "glMapGrid2f", 227 },
   { "glEvalCoord1d", 228 },
   { "glEvalCoord1dv", 229 },
   { "glEvalCoord1f", 230 },
   { "glEvalCoord1fv", 231 },
   { "glEvalCoord2d", 232 },
   { "glEvalCoord2dv", 233 },
   { "glEvalCoord2f", 234 },
   { "glEvalCoord2fv", 235 },
   { "glEvalMesh1", 236 },
   { "glEvalPoint1", 237 },
   { "glEvalMesh2", 238 },
   { "glEvalPoint2", 239 },
   { "glAlphaFunc", 240 },
   { "glBlendFunc", 241 },
   { "glLogicOp", 242 },
   { "glStencilFunc", 243 },
   { "glStencilOp", 244 },
   { "glDepthFunc", 245 },
   { "glPixelZoom", 246 },
   { "glPixelTransferf", 247 },
   { "glPixelTransferi", 248 },
   { "glPixelStoref", 249 },
   { "glPixelStorei", 250 },
   { "glPixelMapfv", 251 },
   { "glPixelMapuiv", 252 },
   { "glPixelMapusv", 253 },
   { "glReadBuffer", 254 },
   { "glCopyPixels", 255 },
   { "glReadPixels", 256 },
   { "glDrawPixels", 257 },
   { "glGetBooleanv", 258 },
   { "glGetClipPlane", 259 },
   { "glGetDoublev", 260 },
   { "glGetError", 261 },
   { "glGetFloatv", 262 },
   { "glGetIntegerv", 263 },
   { "glGetLightfv", 264 },
   { "glGetLightiv", 265 },
   { "glGetMapdv", 266 },
   { "glGetMapfv", 267 },
   { "glGetMapiv", 268 },
   { "glGetMaterialfv", 269 },
   { "glGetMaterialiv", 270 },
   { "glGetPixelMapfv", 271 },
   { "glGetPixelMapuiv", 272 },
   { "glGetPixelMapusv", 273 },
   { "glGetPolygonStipple", 274 },
   { "glGetString", 275 },
   { "glGetTexEnvfv", 276 },
   { "glGetTexEnviv", 277 },
   { "glGetTexGendv", 278 },
   { "glGetTexGenfv", 279 },
   { "glGetTexGeniv", 280 },
   { "glGetTexImage", 281 },
   { "glGetTexParameterfv", 282 },
   { "glGetTexParameteriv", 283 },
   { "glGetTexLevelParameterfv", 284 },
   { "glGetTexLevelParameteriv", 285 },
   { "glIsEnabled", 286 },
   { "glIsList", 287 },
   { "glDepthRange", 288 },
   { "glFrustum", 289 },
   { "glLoadIdentity", 290 },
   { "glLoadMatrixf", 291 },
   { "glLoadMatrixd", 292 },
   { "glMatrixMode", 293 },
   { "glMultMatrixf", 294 },
   { "glMultMatrixd", 295 },
   { "glOrtho", 296 },
   { "glPopMatrix", 297 },
   { "glPushMatrix", 298 },
   { "glRotated", 299 },
   { "glRotatef", 300 },
   { "glScaled", 301 },
   { "glScalef", 302 },
   { "glTranslated", 303 },
   { "glTranslatef", 304 },
   { "glViewport", 305 },
   { "glArrayElement", 306 },
   { "glColorPointer", 308 },
   { "glDisableClientState", 309 },
   { "glDrawArrays", 310 },
   { "glDrawElements", 311 },
   { "glEdgeFlagPointer", 312 },
   { "glEnableClientState", 313 },
   { "glGetPointerv", 329 },
   { "glIndexPointer", 314 },
   { "glInterleavedArrays", 317 },
   { "glNormalPointer", 318 },
   { "glTexCoordPointer", 320 },
   { "glVertexPointer", 321 },
   { "glPolygonOffset", 319 },
   { "glCopyTexImage1D", 323 },
   { "glCopyTexImage2D", 324 },
   { "glCopyTexSubImage1D", 325 },
   { "glCopyTexSubImage2D", 326 },
   { "glTexSubImage1D", 332 },
   { "glTexSubImage2D", 333 },
   { "glAreTexturesResident", 322 },
   { "glBindTexture", 307 },
   { "glDeleteTextures", 327 },
   { "glGenTextures", 328 },
   { "glIsTexture", 330 },
   { "glPrioritizeTextures", 331 },
   { "glIndexub", 315 },
   { "glIndexubv", 316 },
   { "glPopClientAttrib", 334 },
   { "glPushClientAttrib", 335 },
   { "glBlendColor", 336 },
   { "glBlendEquation", 337 },
   { "glDrawRangeElements", 338 },
   { "glColorTable", 339 },
   { "glColorTableParameterfv", 340 },
   { "glColorTableParameteriv", 341 },
   { "glCopyColorTable", 342 },
   { "glGetColorTable", 343 },
   { "glGetColorTableParameterfv", 344 },
   { "glGetColorTableParameteriv", 345 },
   { "glColorSubTable", 346 },
   { "glCopyColorSubTable", 347 },
   { "glConvolutionFilter1D", 348 },
   { "glConvolutionFilter2D", 349 },
   { "glConvolutionParameterf", 350 },
   { "glConvolutionParameterfv", 351 },
   { "glConvolutionParameteri", 352 },
   { "glConvolutionParameteriv", 353 },
   { "glCopyConvolutionFilter1D", 354 },
   { "glCopyConvolutionFilter2D", 355 },
   { "glGetConvolutionFilter", 356 },
   { "glGetConvolutionParameterfv", 357 },
   { "glGetConvolutionParameteriv", 358 },
   { "glGetSeparableFilter", 359 },
   { "glSeparableFilter2D", 360 },
   { "glGetHistogram", 361 },
   { "glGetHistogramParameterfv", 362 },
   { "glGetHistogramParameteriv", 363 },
   { "glGetMinmax", 364 },
   { "glGetMinmaxParameterfv", 365 },
   { "glGetMinmaxParameteriv", 366 },
   { "glHistogram", 367 },
   { "glMinmax", 368 },
   { "glResetHistogram", 369 },
   { "glResetMinmax", 370 },
   { "glTexImage3D", 371 },
   { "glTexSubImage3D", 372 },
   { "glCopyTexSubImage3D", 373 },
   { "glActiveTextureARB", 374 },
   { "glClientActiveTextureARB", 375 },
   { "glMultiTexCoord1dARB", 376 },
   { "glMultiTexCoord1dvARB", 377 },
   { "glMultiTexCoord1fARB", 378 },
   { "glMultiTexCoord1fvARB", 379 },
   { "glMultiTexCoord1iARB", 380 },
   { "glMultiTexCoord1ivARB", 381 },
   { "glMultiTexCoord1sARB", 382 },
   { "glMultiTexCoord1svARB", 383 },
   { "glMultiTexCoord2dARB", 384 },
   { "glMultiTexCoord2dvARB", 385 },
   { "glMultiTexCoord2fARB", 386 },
   { "glMultiTexCoord2fvARB", 387 },
   { "glMultiTexCoord2iARB", 388 },
   { "glMultiTexCoord2ivARB", 389 },
   { "glMultiTexCoord2sARB", 390 },
   { "glMultiTexCoord2svARB", 391 },
   { "glMultiTexCoord3dARB", 392 },
   { "glMultiTexCoord3dvARB", 393 },
   { "glMultiTexCoord3fARB", 394 },
   { "glMultiTexCoord3fvARB", 395 },
   { "glMultiTexCoord3iARB", 396 },
   { "glMultiTexCoord3ivARB", 397 },
   { "glMultiTexCoord3sARB", 398 },
   { "glMultiTexCoord3svARB", 399 },
   { "glMultiTexCoord4dARB", 400 },
   { "glMultiTexCoord4dvARB", 401 },
   { "glMultiTexCoord4fARB", 402 },
   { "glMultiTexCoord4fvARB", 403 },
   { "glMultiTexCoord4iARB", 404 },
   { "glMultiTexCoord4ivARB", 405 },
   { "glMultiTexCoord4sARB", 406 },
   { "glMultiTexCoord4svARB", 407 },
   { NULL, 0 }
};
