1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "gpu/config/gpu_util.h"
6#include "testing/gtest/include/gtest/gtest.h"
7#include "ui/gl/gl_switches.h"
8
9namespace gpu {
10
11TEST(GpuUtilTest, GpuSwitchingOptionFromString) {
12  // Test StringToGpuSwitchingOption.
13  EXPECT_EQ(StringToGpuSwitchingOption(
14                switches::kGpuSwitchingOptionNameAutomatic),
15            GPU_SWITCHING_OPTION_AUTOMATIC);
16  EXPECT_EQ(StringToGpuSwitchingOption(
17                switches::kGpuSwitchingOptionNameForceDiscrete),
18            GPU_SWITCHING_OPTION_FORCE_DISCRETE);
19  EXPECT_EQ(StringToGpuSwitchingOption(
20                switches::kGpuSwitchingOptionNameForceIntegrated),
21            GPU_SWITCHING_OPTION_FORCE_INTEGRATED);
22  EXPECT_EQ(StringToGpuSwitchingOption("xxx"), GPU_SWITCHING_OPTION_UNKNOWN);
23}
24
25TEST(GpuUtilTest, GpuSwitchingOptionToString) {
26  // Test GpuSwitchingOptionToString.
27  EXPECT_STREQ(
28      GpuSwitchingOptionToString(GPU_SWITCHING_OPTION_AUTOMATIC).c_str(),
29      switches::kGpuSwitchingOptionNameAutomatic);
30  EXPECT_STREQ(
31      GpuSwitchingOptionToString(GPU_SWITCHING_OPTION_FORCE_DISCRETE).c_str(),
32      switches::kGpuSwitchingOptionNameForceDiscrete);
33  EXPECT_STREQ(
34      GpuSwitchingOptionToString(GPU_SWITCHING_OPTION_FORCE_INTEGRATED).c_str(),
35      switches::kGpuSwitchingOptionNameForceIntegrated);
36}
37
38TEST(GpuUtilTest, MergeFeatureSets) {
39  {
40    // Merge two empty sets.
41    std::set<int> src;
42    std::set<int> dst;
43    EXPECT_TRUE(dst.empty());
44    MergeFeatureSets(&dst, src);
45    EXPECT_TRUE(dst.empty());
46  }
47  {
48    // Merge an empty set into a set with elements.
49    std::set<int> src;
50    std::set<int> dst;
51    dst.insert(1);
52    EXPECT_EQ(1u, dst.size());
53    MergeFeatureSets(&dst, src);
54    EXPECT_EQ(1u, dst.size());
55  }
56  {
57    // Merge two sets where the source elements are already in the target set.
58    std::set<int> src;
59    std::set<int> dst;
60    src.insert(1);
61    dst.insert(1);
62    EXPECT_EQ(1u, dst.size());
63    MergeFeatureSets(&dst, src);
64    EXPECT_EQ(1u, dst.size());
65  }
66  {
67    // Merge two sets with different elements.
68    std::set<int> src;
69    std::set<int> dst;
70    src.insert(1);
71    dst.insert(2);
72    EXPECT_EQ(1u, dst.size());
73    MergeFeatureSets(&dst, src);
74    EXPECT_EQ(2u, dst.size());
75  }
76}
77
78}  // namespace gpu
79