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