blob: 27ab6e418061e299e8230d197ff5c89fbfa7a6a0 [file]
//
// Copyright 2026 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
#include "gtest/gtest.h"
#include "libANGLE/renderer/gl/renderergl_utils.h"
#include <array>
namespace rx
{
namespace
{
// Test parsing of PowerVR driver version strings.
TEST(RendererGLUtilsTest, GetPowerVRDriverVersion)
{
std::array<int, 2> version = {0, 0};
// Valid PowerVR driver version strings
EXPECT_TRUE(GetPowerVRDriverVersion("Imagination Technologies", "PowerVR D-Series DXT-48-1536",
"OpenGL ES 3.2 build 25.3@6908880", &version));
EXPECT_EQ(version[0], 25);
EXPECT_EQ(version[1], 3);
EXPECT_TRUE(GetPowerVRDriverVersion("Imagination Technologies", "PowerVR D-Series DXT-48-1536",
"OpenGL ES 3.2 build 26.1@7000000", &version));
EXPECT_EQ(version[0], 26);
EXPECT_EQ(version[1], 1);
// Negative tests
EXPECT_FALSE(GetPowerVRDriverVersion("", "", "", &version));
EXPECT_FALSE(GetPowerVRDriverVersion("", "PowerVR D-Series DXT-48-1536",
"OpenGL ES 3.2 build 25.3@6908880", &version));
EXPECT_FALSE(GetPowerVRDriverVersion("Imagination Technologies", "",
"OpenGL ES 3.2 build 25.3@6908880", &version));
EXPECT_FALSE(GetPowerVRDriverVersion("Imagination Technologies", "Some Other Renderer",
"OpenGL ES 3.2 build 25.3@6908880", &version));
EXPECT_FALSE(GetPowerVRDriverVersion("Imagination Technologies", "PowerVR D-Series DXT-48-1536",
"", &version));
EXPECT_FALSE(GetPowerVRDriverVersion("Intel", "Mesa DRI Intel(R) HD Graphics 4000 (IVB GT2)",
"OpenGL ES 3.2 build 25.3@6908880", &version));
EXPECT_FALSE(GetPowerVRDriverVersion("Imagination Technologies", "PowerVR D-Series DXT-48-1536",
"without build version", &version));
EXPECT_FALSE(GetPowerVRDriverVersion("Imagination Technologies", "PowerVR D-Series DXT-48-1536",
"build invalid@version", &version));
EXPECT_FALSE(GetPowerVRDriverVersion("Imagination Technologies", "PowerVR D-Series DXT-48-1536",
"build 26@7000000", &version));
}
} // namespace
} // namespace rx