• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include <gtest/gtest.h>
25 #include <GL/gl.h>
26 
27 extern "C" {
28 #include "main/enums.h"
29 }
30 
31 struct enum_info {
32    int value;
33    const char *name;
34 };
35 
36 extern const struct enum_info everything[];
37 
TEST(EnumStrings,LookUpByNumber)38 TEST(EnumStrings, LookUpByNumber)
39 {
40    for (unsigned i = 0; everything[i].name != NULL; i++) {
41       EXPECT_STREQ(everything[i].name,
42 		   _mesa_enum_to_string(everything[i].value));
43    }
44 }
45 
TEST(EnumStrings,LookUpUnknownNumber)46 TEST(EnumStrings, LookUpUnknownNumber)
47 {
48    EXPECT_STRCASEEQ("0xEEEE", _mesa_enum_to_string(0xEEEE));
49 }
50 
51 const struct enum_info everything[] = {
52    /* A core enum, that should take precedence over _EXT and _OES. */
53    { 0x0007, "GL_QUADS" },
54 
55    /* A core enum, that should take precedence over _EXT, _ARB, and _OES. */
56    { 0x000a, "GL_LINES_ADJACENCY" },
57 
58    /* A core enum, that should take precedence over a _BIT. */
59    { 0x0100, "GL_ACCUM" },
60 
61    /* An enum with "_BIT" that shouldn't get stripped out when we drop most
62     * "*_BIT" enums.
63     */
64    { 0x0d55, "GL_ALPHA_BITS" },
65 
66    /* An EXT-only extension that we never expect to see show up in ARB/core.
67     */
68    { 0x8062, "GL_REPLACE_EXT" },
69 
70    /* An extension that made it from vendor to _EXT, but we never expect to
71     * see go farther.
72     */
73    { 0x80a1, "GL_1PASS_EXT" },
74 
75    /* A vendor-only extension that we never expect to see show up in
76     * EXT/ARB/core.
77     */
78    { 0x8503, "GL_COMBINE4_NV" },
79 
80    /* An extension that got promoted from _EXT to _ARB, but we don't expect to
81     * see go any further.
82     */
83    { 0x850a, "GL_MODELVIEW1_ARB" },
84 
85    /* An EXT-only enum that should take precedence over a _BIT. */
86    { 0x8000, "GL_ABGR_EXT" },
87 
88    /* An unusually-large enum */
89    { 0x19262, "GL_RASTER_POSITION_UNCLIPPED_IBM" },
90 
91    /* Bitfields like GL_SCISSOR_BIT and GL_ALL_ATTRIB_BITS should not appear
92     * in the table.
93     */
94    { 0x00080000, "0x80000" },
95    { 0x000fffff, "0xfffff" },
96    { (int)0xffffffff, "0xffffffff" },
97 
98    { 0, NULL }
99 };
100