// Copyright 2016 The Chromium 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 <memory>

#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gl/gl_version_info.h"

namespace gl {

TEST(GLVersionInfoTest, MajorMinorVersionTest) {
  const char* version_str[] = {"4.3 (Core Profile) Mesa 11.2.0",
      "4.5.0 NVIDIA 364.19",
      "OpenGL ES 2.0 (ANGLE 2.1.0.cd1b12260360)",
      "2.1 INTEL-10.6.33"};
  const char* renderer_str[] = {NULL, NULL, NULL, NULL};
  ExtensionSet extensions = {"extensions"};
  unsigned expected_major[] = {4, 4, 2, 2};
  unsigned expected_minor[] = {3, 5, 0, 1};
  std::unique_ptr<GLVersionInfo> version_info;
  for (unsigned i = 0; i < arraysize(version_str); i++) {
    version_info.reset(
        new GLVersionInfo(version_str[i], renderer_str[i], extensions));
    unsigned major, minor;
    bool is_es, is_es2, is_es3;
    version_info->ParseVersionString(version_str[i], &major, &minor,
                                     &is_es, &is_es2, &is_es3);
    EXPECT_EQ(major, expected_major[i]);
    EXPECT_EQ(minor, expected_minor[i]);
  }
}

}
