enum_sizes.cpp revision 4c270f9c6b1594d06d2d78542ba1908be941b629
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>
38extern "C" {
39#include "../indirect_size.h"
40}
41
42TEST(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
57TEST(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
80TEST(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
92TEST(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
112TEST(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
126TEST(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
148TEST(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
157TEST(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
174TEST(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
185TEST(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
204TEST(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
251TEST(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
306TEST(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
336TEST(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
374TEST(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
381TEST(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
396TEST(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
409TEST(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
430TEST(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
443TEST(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
464TEST(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
470TEST(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
484TEST(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
496TEST(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
516TEST(ValidEnumSizes, PointParameterfv)
517{
518   EXPECT_EQ(1, __glPointParameterfvEXT_size(GL_POINT_SIZE_MIN));
519   EXPECT_EQ(1, __glPointParameterfvEXT_size(GL_POINT_SIZE_MIN_ARB));
520   EXPECT_EQ(1, __glPointParameterfvEXT_size(GL_POINT_SIZE_MIN_SGIS));
521   EXPECT_EQ(1, __glPointParameterfvEXT_size(GL_POINT_SIZE_MAX));
522   EXPECT_EQ(1, __glPointParameterfvEXT_size(GL_POINT_SIZE_MAX_ARB));
523   EXPECT_EQ(1, __glPointParameterfvEXT_size(GL_POINT_SIZE_MAX_SGIS));
524   EXPECT_EQ(1, __glPointParameterfvEXT_size(GL_POINT_FADE_THRESHOLD_SIZE));
525   EXPECT_EQ(1, __glPointParameterfvEXT_size(GL_POINT_FADE_THRESHOLD_SIZE_ARB));
526   EXPECT_EQ(1, __glPointParameterfvEXT_size(GL_POINT_FADE_THRESHOLD_SIZE_SGIS));
527   EXPECT_EQ(1, __glPointParameterfvEXT_size(GL_POINT_SPRITE_R_MODE_NV));
528   EXPECT_EQ(1, __glPointParameterfvEXT_size(GL_POINT_SPRITE_COORD_ORIGIN));
529   EXPECT_EQ(3, __glPointParameterfvEXT_size(GL_POINT_DISTANCE_ATTENUATION));
530   EXPECT_EQ(3, __glPointParameterfvEXT_size(GL_POINT_DISTANCE_ATTENUATION_ARB));
531}
532
533TEST(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, __glPointParameterfvEXT_size(i)) << "i = 0x" <<
553            std::setw(4) << std::setfill('0') << std::hex << i;
554      }
555   }
556}
557