/* * 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 "main/enums.h" } struct enum_info { int value; const char *name; }; extern const struct enum_info everything[]; TEST(EnumStrings, LookUpByNumber) { for (unsigned i = 0; everything[i].name != NULL; i++) { EXPECT_STREQ(everything[i].name, _mesa_enum_to_string(everything[i].value)); } } TEST(EnumStrings, LookUpUnknownNumber) { EXPECT_STRCASEEQ("0xEEEE", _mesa_enum_to_string(0xEEEE)); } const struct enum_info everything[] = { /* A core enum, that should take precedence over _EXT and _OES. */ { 0x0007, "GL_QUADS" }, /* A core enum, that should take precedence over _EXT, _ARB, and _OES. */ { 0x000a, "GL_LINES_ADJACENCY" }, /* A core enum, that should take precedence over a _BIT. */ { 0x0100, "GL_ACCUM" }, /* An enum with "_BIT" that shouldn't get stripped out when we drop most * "*_BIT" enums. */ { 0x0d55, "GL_ALPHA_BITS" }, /* An EXT-only extension that we never expect to see show up in ARB/core. */ { 0x8062, "GL_REPLACE_EXT" }, /* An extension that made it from vendor to _EXT, but we never expect to * see go farther. */ { 0x80a1, "GL_1PASS_EXT" }, /* A vendor-only extension that we never expect to see show up in * EXT/ARB/core. */ { 0x8503, "GL_COMBINE4_NV" }, /* An extension that got promoted from _EXT to _ARB, but we don't expect to * see go any further. */ { 0x850a, "GL_MODELVIEW1_ARB" }, /* An EXT-only enum that should take precedence over a _BIT. */ { 0x8000, "GL_ABGR_EXT" }, /* An unusually-large enum */ { 0x19262, "GL_RASTER_POSITION_UNCLIPPED_IBM" }, /* Bitfields like GL_SCISSOR_BIT and GL_ALL_ATTRIB_BITS should not appear * in the table. */ { 0x00080000, "0x80000" }, { 0x000fffff, "0xfffff" }, { (int)0xffffffff, "0xffffffff" }, { 0, NULL } };