1 /*
2  * Copyright © 2012 Intel Corporation
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the "Software"),
6  * to deal in the Software without restriction, including without limitation
7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8  * and/or sell copies of the Software, and to permit persons to whom the
9  * Software is furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice (including the next
12  * paragraph) shall be included in all copies or substantial portions of the
13  * Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21  * DEALINGS IN THE SOFTWARE.
22  */
23 
24 /**
25  * \file enum_sizes.cpp
26  * Validate the generated code in indirect_size.c
27  *
28  * The functions in indirect_size.c determine how many data values are
29  * associated with each enumerant that can be passed to various OpenGL
30  * functions.  Tests in this file probe each function in indirect_size.c with
31  * each of the possible valid enums and verify that the correct size is
32  * returned.  Tests in this file also probe each function in indirect_size.c
33  * with a larger number of \b invalid enums and verify that zero is returned.
34  */
35 
36 #include <gtest/gtest.h>
37 #include <GL/gl.h>
38 extern "C" {
39 #include "indirect_size.h"
40 }
41 
TEST(ValidEnumSizes,CallLists)42 TEST(ValidEnumSizes, CallLists)
43 {
44    EXPECT_EQ(1, __glCallLists_size(GL_BYTE));
45    EXPECT_EQ(1, __glCallLists_size(GL_UNSIGNED_BYTE));
46    EXPECT_EQ(2, __glCallLists_size(GL_SHORT));
47    EXPECT_EQ(2, __glCallLists_size(GL_UNSIGNED_SHORT));
48    EXPECT_EQ(2, __glCallLists_size(GL_2_BYTES));
49    EXPECT_EQ(2, __glCallLists_size(GL_HALF_FLOAT));
50    EXPECT_EQ(3, __glCallLists_size(GL_3_BYTES));
51    EXPECT_EQ(4, __glCallLists_size(GL_INT));
52    EXPECT_EQ(4, __glCallLists_size(GL_UNSIGNED_INT));
53    EXPECT_EQ(4, __glCallLists_size(GL_FLOAT));
54    EXPECT_EQ(4, __glCallLists_size(GL_4_BYTES));
55 }
56 
TEST(InvalidEnumSizes,CallLists)57 TEST(InvalidEnumSizes, CallLists)
58 {
59    for (unsigned i = 0; i < 0x10004; i++) {
60       switch (i) {
61       case GL_BYTE:
62       case GL_UNSIGNED_BYTE:
63       case GL_SHORT:
64       case GL_UNSIGNED_SHORT:
65       case GL_2_BYTES:
66       case GL_HALF_FLOAT:
67       case GL_3_BYTES:
68       case GL_INT:
69       case GL_UNSIGNED_INT:
70       case GL_FLOAT:
71       case GL_4_BYTES:
72          break;
73       default:
74          EXPECT_EQ(0, __glCallLists_size(i)) << "i = 0x" <<
75             std::setw(4) << std::setfill('0') << std::hex << i;
76       }
77    }
78 }
79 
TEST(ValidEnumSizes,Fogfv)80 TEST(ValidEnumSizes, Fogfv)
81 {
82    EXPECT_EQ(1, __glFogfv_size(GL_FOG_INDEX));
83    EXPECT_EQ(1, __glFogfv_size(GL_FOG_DENSITY));
84    EXPECT_EQ(1, __glFogfv_size(GL_FOG_START));
85    EXPECT_EQ(1, __glFogfv_size(GL_FOG_END));
86    EXPECT_EQ(1, __glFogfv_size(GL_FOG_MODE));
87    EXPECT_EQ(1, __glFogfv_size(GL_FOG_OFFSET_VALUE_SGIX));
88    EXPECT_EQ(1, __glFogfv_size(GL_FOG_DISTANCE_MODE_NV));
89    EXPECT_EQ(4, __glFogfv_size(GL_FOG_COLOR));
90 }
91 
TEST(InvalidEnumSizes,Fogfv)92 TEST(InvalidEnumSizes, Fogfv)
93 {
94    for (unsigned i = 0; i < 0x10004; i++) {
95       switch (i) {
96       case GL_FOG_INDEX:
97       case GL_FOG_DENSITY:
98       case GL_FOG_START:
99       case GL_FOG_END:
100       case GL_FOG_MODE:
101       case GL_FOG_OFFSET_VALUE_SGIX:
102       case GL_FOG_DISTANCE_MODE_NV:
103       case GL_FOG_COLOR:
104          break;
105       default:
106          EXPECT_EQ(0, __glFogfv_size(i)) << "i = 0x" <<
107             std::setw(4) << std::setfill('0') << std::hex << i;
108       }
109    }
110 }
111 
TEST(ValidEnumSizes,Lightfv)112 TEST(ValidEnumSizes, Lightfv)
113 {
114    EXPECT_EQ(1, __glLightfv_size(GL_SPOT_EXPONENT));
115    EXPECT_EQ(1, __glLightfv_size(GL_SPOT_CUTOFF));
116    EXPECT_EQ(1, __glLightfv_size(GL_CONSTANT_ATTENUATION));
117    EXPECT_EQ(1, __glLightfv_size(GL_LINEAR_ATTENUATION));
118    EXPECT_EQ(1, __glLightfv_size(GL_QUADRATIC_ATTENUATION));
119    EXPECT_EQ(3, __glLightfv_size(GL_SPOT_DIRECTION));
120    EXPECT_EQ(4, __glLightfv_size(GL_AMBIENT));
121    EXPECT_EQ(4, __glLightfv_size(GL_DIFFUSE));
122    EXPECT_EQ(4, __glLightfv_size(GL_SPECULAR));
123    EXPECT_EQ(4, __glLightfv_size(GL_POSITION));
124 }
125 
TEST(InvalidEnumSizes,Lightfv)126 TEST(InvalidEnumSizes, Lightfv)
127 {
128    for (unsigned i = 0; i < 0x10004; i++) {
129       switch (i) {
130       case GL_SPOT_EXPONENT:
131       case GL_SPOT_CUTOFF:
132       case GL_CONSTANT_ATTENUATION:
133       case GL_LINEAR_ATTENUATION:
134       case GL_QUADRATIC_ATTENUATION:
135       case GL_SPOT_DIRECTION:
136       case GL_AMBIENT:
137       case GL_DIFFUSE:
138       case GL_SPECULAR:
139       case GL_POSITION:
140          break;
141       default:
142          EXPECT_EQ(0, __glLightfv_size(i)) << "i = 0x" <<
143             std::setw(4) << std::setfill('0') << std::hex << i;
144       }
145    }
146 }
147 
TEST(ValidEnumSizes,LightModelfv)148 TEST(ValidEnumSizes, LightModelfv)
149 {
150    EXPECT_EQ(1, __glLightModelfv_size(GL_LIGHT_MODEL_LOCAL_VIEWER));
151    EXPECT_EQ(1, __glLightModelfv_size(GL_LIGHT_MODEL_TWO_SIDE));
152    EXPECT_EQ(1, __glLightModelfv_size(GL_LIGHT_MODEL_COLOR_CONTROL));
153    EXPECT_EQ(1, __glLightModelfv_size(GL_LIGHT_MODEL_COLOR_CONTROL_EXT));
154    EXPECT_EQ(4, __glLightModelfv_size(GL_LIGHT_MODEL_AMBIENT));
155 }
156 
TEST(InvalidEnumSizes,LightModelfv)157 TEST(InvalidEnumSizes, LightModelfv)
158 {
159    for (unsigned i = 0; i < 0x10004; i++) {
160       switch (i) {
161       case GL_LIGHT_MODEL_LOCAL_VIEWER:
162       case GL_LIGHT_MODEL_TWO_SIDE:
163       case GL_LIGHT_MODEL_COLOR_CONTROL:
164 /*      case GL_LIGHT_MODEL_COLOR_CONTROL_EXT:*/
165       case GL_LIGHT_MODEL_AMBIENT:
166          break;
167       default:
168          EXPECT_EQ(0, __glLightModelfv_size(i)) << "i = 0x" <<
169             std::setw(4) << std::setfill('0') << std::hex << i;
170       }
171    }
172 }
173 
TEST(ValidEnumSizes,Materialfv)174 TEST(ValidEnumSizes, Materialfv)
175 {
176    EXPECT_EQ(1, __glMaterialfv_size(GL_SHININESS));
177    EXPECT_EQ(3, __glMaterialfv_size(GL_COLOR_INDEXES));
178    EXPECT_EQ(4, __glMaterialfv_size(GL_AMBIENT));
179    EXPECT_EQ(4, __glMaterialfv_size(GL_DIFFUSE));
180    EXPECT_EQ(4, __glMaterialfv_size(GL_SPECULAR));
181    EXPECT_EQ(4, __glMaterialfv_size(GL_EMISSION));
182    EXPECT_EQ(4, __glMaterialfv_size(GL_AMBIENT_AND_DIFFUSE));
183 }
184 
TEST(InvalidEnumSizes,Materialfv)185 TEST(InvalidEnumSizes, Materialfv)
186 {
187    for (unsigned i = 0; i < 0x10004; i++) {
188       switch (i) {
189       case GL_SHININESS:
190       case GL_COLOR_INDEXES:
191       case GL_AMBIENT:
192       case GL_DIFFUSE:
193       case GL_SPECULAR:
194       case GL_EMISSION:
195       case GL_AMBIENT_AND_DIFFUSE:
196          break;
197       default:
198          EXPECT_EQ(0, __glMaterialfv_size(i)) << "i = 0x" <<
199             std::setw(4) << std::setfill('0') << std::hex << i;
200       }
201    }
202 }
203 
TEST(ValidEnumSizes,TexParameterfv)204 TEST(ValidEnumSizes, TexParameterfv)
205 {
206    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_MAG_FILTER));
207    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_MIN_FILTER));
208    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_WRAP_S));
209    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_WRAP_T));
210    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_PRIORITY));
211    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_WRAP_R));
212    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_COMPARE_FAIL_VALUE_ARB));
213    EXPECT_EQ(1, __glTexParameterfv_size(GL_SHADOW_AMBIENT_SGIX));
214    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_MIN_LOD));
215    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_MAX_LOD));
216    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_BASE_LEVEL));
217    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_MAX_LEVEL));
218    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_CLIPMAP_FRAME_SGIX));
219    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_LOD_BIAS_S_SGIX));
220    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_LOD_BIAS_T_SGIX));
221    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_LOD_BIAS_R_SGIX));
222    EXPECT_EQ(1, __glTexParameterfv_size(GL_GENERATE_MIPMAP));
223    EXPECT_EQ(1, __glTexParameterfv_size(GL_GENERATE_MIPMAP_SGIS));
224    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_COMPARE_SGIX));
225    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_COMPARE_OPERATOR_SGIX));
226    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_MAX_CLAMP_S_SGIX));
227    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_MAX_CLAMP_T_SGIX));
228    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_MAX_CLAMP_R_SGIX));
229    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_MAX_ANISOTROPY_EXT));
230    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_LOD_BIAS));
231    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_LOD_BIAS_EXT));
232    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_STORAGE_HINT_APPLE));
233    EXPECT_EQ(1, __glTexParameterfv_size(GL_STORAGE_PRIVATE_APPLE));
234    EXPECT_EQ(1, __glTexParameterfv_size(GL_STORAGE_CACHED_APPLE));
235    EXPECT_EQ(1, __glTexParameterfv_size(GL_STORAGE_SHARED_APPLE));
236    EXPECT_EQ(1, __glTexParameterfv_size(GL_DEPTH_TEXTURE_MODE));
237    EXPECT_EQ(1, __glTexParameterfv_size(GL_DEPTH_TEXTURE_MODE_ARB));
238    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_COMPARE_MODE));
239    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_COMPARE_MODE_ARB));
240    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_COMPARE_FUNC));
241    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_COMPARE_FUNC_ARB));
242    EXPECT_EQ(1, __glTexParameterfv_size(GL_TEXTURE_UNSIGNED_REMAP_MODE_NV));
243    EXPECT_EQ(2, __glTexParameterfv_size(GL_TEXTURE_CLIPMAP_CENTER_SGIX));
244    EXPECT_EQ(2, __glTexParameterfv_size(GL_TEXTURE_CLIPMAP_OFFSET_SGIX));
245    EXPECT_EQ(3, __glTexParameterfv_size(GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX));
246    EXPECT_EQ(4, __glTexParameterfv_size(GL_TEXTURE_BORDER_COLOR));
247    EXPECT_EQ(4, __glTexParameterfv_size(GL_POST_TEXTURE_FILTER_BIAS_SGIX));
248    EXPECT_EQ(4, __glTexParameterfv_size(GL_POST_TEXTURE_FILTER_SCALE_SGIX));
249 }
250 
TEST(InvalidEnumSizes,TexParameterfv)251 TEST(InvalidEnumSizes, TexParameterfv)
252 {
253    for (unsigned i = 0; i < 0x10004; i++) {
254       switch (i) {
255       case GL_TEXTURE_MAG_FILTER:
256       case GL_TEXTURE_MIN_FILTER:
257       case GL_TEXTURE_WRAP_S:
258       case GL_TEXTURE_WRAP_T:
259       case GL_TEXTURE_PRIORITY:
260       case GL_TEXTURE_WRAP_R:
261       case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
262 /*      case GL_SHADOW_AMBIENT_SGIX:*/
263       case GL_TEXTURE_MIN_LOD:
264       case GL_TEXTURE_MAX_LOD:
265       case GL_TEXTURE_BASE_LEVEL:
266       case GL_TEXTURE_MAX_LEVEL:
267       case GL_TEXTURE_CLIPMAP_FRAME_SGIX:
268       case GL_TEXTURE_LOD_BIAS_S_SGIX:
269       case GL_TEXTURE_LOD_BIAS_T_SGIX:
270       case GL_TEXTURE_LOD_BIAS_R_SGIX:
271       case GL_GENERATE_MIPMAP:
272 /*      case GL_GENERATE_MIPMAP_SGIS:*/
273       case GL_TEXTURE_COMPARE_SGIX:
274       case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
275       case GL_TEXTURE_MAX_CLAMP_S_SGIX:
276       case GL_TEXTURE_MAX_CLAMP_T_SGIX:
277       case GL_TEXTURE_MAX_CLAMP_R_SGIX:
278       case GL_TEXTURE_MAX_ANISOTROPY_EXT:
279       case GL_TEXTURE_LOD_BIAS:
280 /*      case GL_TEXTURE_LOD_BIAS_EXT:*/
281       case GL_TEXTURE_STORAGE_HINT_APPLE:
282       case GL_STORAGE_PRIVATE_APPLE:
283       case GL_STORAGE_CACHED_APPLE:
284       case GL_STORAGE_SHARED_APPLE:
285       case GL_DEPTH_TEXTURE_MODE:
286 /*      case GL_DEPTH_TEXTURE_MODE_ARB:*/
287       case GL_TEXTURE_COMPARE_MODE:
288 /*      case GL_TEXTURE_COMPARE_MODE_ARB:*/
289       case GL_TEXTURE_COMPARE_FUNC:
290 /*      case GL_TEXTURE_COMPARE_FUNC_ARB:*/
291       case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
292       case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
293       case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
294       case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
295       case GL_TEXTURE_BORDER_COLOR:
296       case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
297       case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
298          break;
299       default:
300          EXPECT_EQ(0, __glTexParameterfv_size(i)) << "i = 0x" <<
301             std::setw(4) << std::setfill('0') << std::hex << i;
302       }
303    }
304 }
305 
TEST(ValidEnumSizes,TexEnvfv)306 TEST(ValidEnumSizes, TexEnvfv)
307 {
308    EXPECT_EQ(1, __glTexEnvfv_size(GL_ALPHA_SCALE));
309    EXPECT_EQ(1, __glTexEnvfv_size(GL_TEXTURE_ENV_MODE));
310    EXPECT_EQ(1, __glTexEnvfv_size(GL_TEXTURE_LOD_BIAS));
311    EXPECT_EQ(1, __glTexEnvfv_size(GL_COMBINE_RGB));
312    EXPECT_EQ(1, __glTexEnvfv_size(GL_COMBINE_ALPHA));
313    EXPECT_EQ(1, __glTexEnvfv_size(GL_RGB_SCALE));
314    EXPECT_EQ(1, __glTexEnvfv_size(GL_SOURCE0_RGB));
315    EXPECT_EQ(1, __glTexEnvfv_size(GL_SOURCE1_RGB));
316    EXPECT_EQ(1, __glTexEnvfv_size(GL_SOURCE2_RGB));
317    EXPECT_EQ(1, __glTexEnvfv_size(GL_SOURCE3_RGB_NV));
318    EXPECT_EQ(1, __glTexEnvfv_size(GL_SOURCE0_ALPHA));
319    EXPECT_EQ(1, __glTexEnvfv_size(GL_SOURCE1_ALPHA));
320    EXPECT_EQ(1, __glTexEnvfv_size(GL_SOURCE2_ALPHA));
321    EXPECT_EQ(1, __glTexEnvfv_size(GL_SOURCE3_ALPHA_NV));
322    EXPECT_EQ(1, __glTexEnvfv_size(GL_OPERAND0_RGB));
323    EXPECT_EQ(1, __glTexEnvfv_size(GL_OPERAND1_RGB));
324    EXPECT_EQ(1, __glTexEnvfv_size(GL_OPERAND2_RGB));
325    EXPECT_EQ(1, __glTexEnvfv_size(GL_OPERAND3_RGB_NV));
326    EXPECT_EQ(1, __glTexEnvfv_size(GL_OPERAND0_ALPHA));
327    EXPECT_EQ(1, __glTexEnvfv_size(GL_OPERAND1_ALPHA));
328    EXPECT_EQ(1, __glTexEnvfv_size(GL_OPERAND2_ALPHA));
329    EXPECT_EQ(1, __glTexEnvfv_size(GL_OPERAND3_ALPHA_NV));
330    EXPECT_EQ(1, __glTexEnvfv_size(GL_BUMP_TARGET_ATI));
331    EXPECT_EQ(1, __glTexEnvfv_size(GL_COORD_REPLACE_ARB));
332    EXPECT_EQ(1, __glTexEnvfv_size(GL_COORD_REPLACE_NV));
333    EXPECT_EQ(4, __glTexEnvfv_size(GL_TEXTURE_ENV_COLOR));
334 }
335 
TEST(InvalidEnumSizes,TexEnvfv)336 TEST(InvalidEnumSizes, TexEnvfv)
337 {
338    for (unsigned i = 0; i < 0x10004; i++) {
339       switch (i) {
340       case GL_ALPHA_SCALE:
341       case GL_TEXTURE_ENV_MODE:
342       case GL_TEXTURE_LOD_BIAS:
343       case GL_COMBINE_RGB:
344       case GL_COMBINE_ALPHA:
345       case GL_RGB_SCALE:
346       case GL_SOURCE0_RGB:
347       case GL_SOURCE1_RGB:
348       case GL_SOURCE2_RGB:
349       case GL_SOURCE3_RGB_NV:
350       case GL_SOURCE0_ALPHA:
351       case GL_SOURCE1_ALPHA:
352       case GL_SOURCE2_ALPHA:
353       case GL_SOURCE3_ALPHA_NV:
354       case GL_OPERAND0_RGB:
355       case GL_OPERAND1_RGB:
356       case GL_OPERAND2_RGB:
357       case GL_OPERAND3_RGB_NV:
358       case GL_OPERAND0_ALPHA:
359       case GL_OPERAND1_ALPHA:
360       case GL_OPERAND2_ALPHA:
361       case GL_OPERAND3_ALPHA_NV:
362       case GL_BUMP_TARGET_ATI:
363       case GL_COORD_REPLACE_ARB:
364 /*      case GL_COORD_REPLACE_NV:*/
365       case GL_TEXTURE_ENV_COLOR:
366          break;
367       default:
368          EXPECT_EQ(0, __glTexEnvfv_size(i)) << "i = 0x" <<
369             std::setw(4) << std::setfill('0') << std::hex << i;
370       }
371    }
372 }
373 
TEST(ValidEnumSizes,TexGendv)374 TEST(ValidEnumSizes, TexGendv)
375 {
376    EXPECT_EQ(1, __glTexGendv_size(GL_TEXTURE_GEN_MODE));
377    EXPECT_EQ(4, __glTexGendv_size(GL_OBJECT_PLANE));
378    EXPECT_EQ(4, __glTexGendv_size(GL_EYE_PLANE));
379 }
380 
TEST(InvalidEnumSizes,TexGendv)381 TEST(InvalidEnumSizes, TexGendv)
382 {
383    for (unsigned i = 0; i < 0x10004; i++) {
384       switch (i) {
385       case GL_TEXTURE_GEN_MODE:
386       case GL_OBJECT_PLANE:
387       case GL_EYE_PLANE:
388          break;
389       default:
390          EXPECT_EQ(0, __glTexGendv_size(i)) << "i = 0x" <<
391             std::setw(4) << std::setfill('0') << std::hex << i;
392       }
393    }
394 }
395 
TEST(ValidEnumSizes,Map1d)396 TEST(ValidEnumSizes, Map1d)
397 {
398    EXPECT_EQ(1, __glMap1d_size(GL_MAP1_INDEX));
399    EXPECT_EQ(1, __glMap1d_size(GL_MAP1_TEXTURE_COORD_1));
400    EXPECT_EQ(2, __glMap1d_size(GL_MAP1_TEXTURE_COORD_2));
401    EXPECT_EQ(3, __glMap1d_size(GL_MAP1_NORMAL));
402    EXPECT_EQ(3, __glMap1d_size(GL_MAP1_TEXTURE_COORD_3));
403    EXPECT_EQ(3, __glMap1d_size(GL_MAP1_VERTEX_3));
404    EXPECT_EQ(4, __glMap1d_size(GL_MAP1_COLOR_4));
405    EXPECT_EQ(4, __glMap1d_size(GL_MAP1_TEXTURE_COORD_4));
406    EXPECT_EQ(4, __glMap1d_size(GL_MAP1_VERTEX_4));
407 }
408 
TEST(InvalidEnumSizes,Map1d)409 TEST(InvalidEnumSizes, Map1d)
410 {
411    for (unsigned i = 0; i < 0x10004; i++) {
412       switch (i) {
413       case GL_MAP1_INDEX:
414       case GL_MAP1_TEXTURE_COORD_1:
415       case GL_MAP1_TEXTURE_COORD_2:
416       case GL_MAP1_NORMAL:
417       case GL_MAP1_TEXTURE_COORD_3:
418       case GL_MAP1_VERTEX_3:
419       case GL_MAP1_COLOR_4:
420       case GL_MAP1_TEXTURE_COORD_4:
421       case GL_MAP1_VERTEX_4:
422          break;
423       default:
424          EXPECT_EQ(0, __glMap1d_size(i)) << "i = 0x" <<
425             std::setw(4) << std::setfill('0') << std::hex << i;
426       }
427    }
428 }
429 
TEST(ValidEnumSizes,Map2d)430 TEST(ValidEnumSizes, Map2d)
431 {
432    EXPECT_EQ(1, __glMap2d_size(GL_MAP2_INDEX));
433    EXPECT_EQ(1, __glMap2d_size(GL_MAP2_TEXTURE_COORD_1));
434    EXPECT_EQ(2, __glMap2d_size(GL_MAP2_TEXTURE_COORD_2));
435    EXPECT_EQ(3, __glMap2d_size(GL_MAP2_NORMAL));
436    EXPECT_EQ(3, __glMap2d_size(GL_MAP2_TEXTURE_COORD_3));
437    EXPECT_EQ(3, __glMap2d_size(GL_MAP2_VERTEX_3));
438    EXPECT_EQ(4, __glMap2d_size(GL_MAP2_COLOR_4));
439    EXPECT_EQ(4, __glMap2d_size(GL_MAP2_TEXTURE_COORD_4));
440    EXPECT_EQ(4, __glMap2d_size(GL_MAP2_VERTEX_4));
441 }
442 
TEST(InvalidEnumSizes,Map2d)443 TEST(InvalidEnumSizes, Map2d)
444 {
445    for (unsigned i = 0; i < 0x10004; i++) {
446       switch (i) {
447       case GL_MAP2_INDEX:
448       case GL_MAP2_TEXTURE_COORD_1:
449       case GL_MAP2_TEXTURE_COORD_2:
450       case GL_MAP2_NORMAL:
451       case GL_MAP2_TEXTURE_COORD_3:
452       case GL_MAP2_VERTEX_3:
453       case GL_MAP2_COLOR_4:
454       case GL_MAP2_TEXTURE_COORD_4:
455       case GL_MAP2_VERTEX_4:
456          break;
457       default:
458          EXPECT_EQ(0, __glMap2d_size(i)) << "i = 0x" <<
459             std::setw(4) << std::setfill('0') << std::hex << i;
460       }
461    }
462 }
463 
TEST(ValidEnumSizes,ColorTableParameterfv)464 TEST(ValidEnumSizes, ColorTableParameterfv)
465 {
466    EXPECT_EQ(4, __glColorTableParameterfv_size(GL_COLOR_TABLE_SCALE));
467    EXPECT_EQ(4, __glColorTableParameterfv_size(GL_COLOR_TABLE_BIAS));
468 }
469 
TEST(InvalidEnumSizes,ColorTableParameterfv)470 TEST(InvalidEnumSizes, ColorTableParameterfv)
471 {
472    for (unsigned i = 0; i < 0x10004; i++) {
473       switch (i) {
474       case GL_COLOR_TABLE_SCALE:
475       case GL_COLOR_TABLE_BIAS:
476          break;
477       default:
478          EXPECT_EQ(0, __glColorTableParameterfv_size(i)) << "i = 0x" <<
479             std::setw(4) << std::setfill('0') << std::hex << i;
480       }
481    }
482 }
483 
TEST(ValidEnumSizes,ConvolutionParameterfv)484 TEST(ValidEnumSizes, ConvolutionParameterfv)
485 {
486    EXPECT_EQ(1, __glConvolutionParameterfv_size(GL_CONVOLUTION_BORDER_MODE));
487    EXPECT_EQ(1, __glConvolutionParameterfv_size(GL_CONVOLUTION_BORDER_MODE_EXT));
488    EXPECT_EQ(4, __glConvolutionParameterfv_size(GL_CONVOLUTION_FILTER_SCALE));
489    EXPECT_EQ(4, __glConvolutionParameterfv_size(GL_CONVOLUTION_FILTER_SCALE_EXT));
490    EXPECT_EQ(4, __glConvolutionParameterfv_size(GL_CONVOLUTION_FILTER_BIAS));
491    EXPECT_EQ(4, __glConvolutionParameterfv_size(GL_CONVOLUTION_FILTER_BIAS_EXT));
492    EXPECT_EQ(4, __glConvolutionParameterfv_size(GL_CONVOLUTION_BORDER_COLOR));
493    EXPECT_EQ(4, __glConvolutionParameterfv_size(GL_CONVOLUTION_BORDER_COLOR_HP));
494 }
495 
TEST(InvalidEnumSizes,ConvolutionParameterfv)496 TEST(InvalidEnumSizes, ConvolutionParameterfv)
497 {
498    for (unsigned i = 0; i < 0x10004; i++) {
499       switch (i) {
500       case GL_CONVOLUTION_BORDER_MODE:
501 /*      case GL_CONVOLUTION_BORDER_MODE_EXT:*/
502       case GL_CONVOLUTION_FILTER_SCALE:
503 /*      case GL_CONVOLUTION_FILTER_SCALE_EXT:*/
504       case GL_CONVOLUTION_FILTER_BIAS:
505 /*      case GL_CONVOLUTION_FILTER_BIAS_EXT:*/
506       case GL_CONVOLUTION_BORDER_COLOR:
507 /*      case GL_CONVOLUTION_BORDER_COLOR_HP:*/
508          break;
509       default:
510          EXPECT_EQ(0, __glConvolutionParameterfv_size(i)) << "i = 0x" <<
511             std::setw(4) << std::setfill('0') << std::hex << i;
512       }
513    }
514 }
515 
TEST(ValidEnumSizes,PointParameterfv)516 TEST(ValidEnumSizes, PointParameterfv)
517 {
518    EXPECT_EQ(1, __glPointParameterfv_size(GL_POINT_SIZE_MIN));
519    EXPECT_EQ(1, __glPointParameterfv_size(GL_POINT_SIZE_MIN_ARB));
520    EXPECT_EQ(1, __glPointParameterfv_size(GL_POINT_SIZE_MIN_SGIS));
521    EXPECT_EQ(1, __glPointParameterfv_size(GL_POINT_SIZE_MAX));
522    EXPECT_EQ(1, __glPointParameterfv_size(GL_POINT_SIZE_MAX_ARB));
523    EXPECT_EQ(1, __glPointParameterfv_size(GL_POINT_SIZE_MAX_SGIS));
524    EXPECT_EQ(1, __glPointParameterfv_size(GL_POINT_FADE_THRESHOLD_SIZE));
525    EXPECT_EQ(1, __glPointParameterfv_size(GL_POINT_FADE_THRESHOLD_SIZE_ARB));
526    EXPECT_EQ(1, __glPointParameterfv_size(GL_POINT_FADE_THRESHOLD_SIZE_SGIS));
527    EXPECT_EQ(1, __glPointParameterfv_size(GL_POINT_SPRITE_R_MODE_NV));
528    EXPECT_EQ(1, __glPointParameterfv_size(GL_POINT_SPRITE_COORD_ORIGIN));
529    EXPECT_EQ(3, __glPointParameterfv_size(GL_POINT_DISTANCE_ATTENUATION));
530    EXPECT_EQ(3, __glPointParameterfv_size(GL_POINT_DISTANCE_ATTENUATION_ARB));
531 }
532 
TEST(InvalidEnumSizes,PointParameterfv)533 TEST(InvalidEnumSizes, PointParameterfv)
534 {
535    for (unsigned i = 0; i < 0x10004; i++) {
536       switch (i) {
537       case GL_POINT_SIZE_MIN:
538 /*      case GL_POINT_SIZE_MIN_ARB:*/
539 /*      case GL_POINT_SIZE_MIN_SGIS:*/
540       case GL_POINT_SIZE_MAX:
541 /*      case GL_POINT_SIZE_MAX_ARB:*/
542 /*      case GL_POINT_SIZE_MAX_SGIS:*/
543       case GL_POINT_FADE_THRESHOLD_SIZE:
544 /*      case GL_POINT_FADE_THRESHOLD_SIZE_ARB:*/
545 /*      case GL_POINT_FADE_THRESHOLD_SIZE_SGIS:*/
546       case GL_POINT_SPRITE_R_MODE_NV:
547       case GL_POINT_SPRITE_COORD_ORIGIN:
548       case GL_POINT_DISTANCE_ATTENUATION:
549 /*      case GL_POINT_DISTANCE_ATTENUATION_ARB:*/
550          break;
551       default:
552          EXPECT_EQ(0, __glPointParameterfv_size(i)) << "i = 0x" <<
553             std::setw(4) << std::setfill('0') << std::hex << i;
554       }
555    }
556 }
557