Test for duplicate extensions in GL extension string

This commit is contained in:
baldurk
2020-03-05 17:23:40 +00:00
parent 2250e44ae6
commit 7e0bab41ab
+42
View File
@@ -76,10 +76,52 @@ void main()
int main()
{
// don't use core profile so that we can check glGetString(GL_EXTENSIONS)
coreProfile = false;
// initialise, create window, create context, etc
if(!Init())
return 3;
std::vector<std::string> exts;
GLint num = 0;
glGetIntegerv(GL_NUM_EXTENSIONS, &num);
exts.resize(num);
for(GLint i = 0; i < num; i++)
exts[i] = (const char *)glGetStringi(GL_EXTENSIONS, i);
std::string ext_string = (const char *)glGetString(GL_EXTENSIONS);
std::vector<std::string> exts_split;
while(!ext_string.empty())
{
std::string e = ext_string.substr(0, ext_string.find(' '));
ext_string.erase(0, e.length() + 1);
exts_split.push_back(e);
}
std::sort(exts_split.begin(), exts_split.end());
std::sort(exts.begin(), exts.end());
if(exts != exts_split)
{
TEST_ERROR("Extension string from glGetString doesn't match glGetStringi extensions");
return 4;
}
if(std::unique(exts.begin(), exts.end()) != exts.end())
{
TEST_ERROR("Extensions from glGetStringi contains duplicates");
return 5;
}
if(std::unique(exts_split.begin(), exts_split.end()) != exts_split.end())
{
TEST_ERROR("Extension string from glGetString contains duplicates");
return 5;
}
GLuint vao = MakeVAO();
glBindVertexArray(vao);