1// Copyright (c) 2010 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 <windows.h>
6
7#include "base/basictypes.h"
8#include "base/strings/string_util.h"
9#include "base/win/win_util.h"
10#include "base/win/windows_version.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13namespace base {
14namespace win {
15
16namespace {
17
18// Saves the current thread's locale ID when initialized, and restores it when
19// the instance is going out of scope.
20class ThreadLocaleSaver {
21 public:
22  ThreadLocaleSaver() : original_locale_id_(GetThreadLocale()) {}
23  ~ThreadLocaleSaver() { SetThreadLocale(original_locale_id_); }
24
25 private:
26  LCID original_locale_id_;
27
28  DISALLOW_COPY_AND_ASSIGN(ThreadLocaleSaver);
29};
30
31}  // namespace
32
33// The test is somewhat silly, because the Vista bots some have UAC enabled
34// and some have it disabled. At least we check that it does not crash.
35TEST(BaseWinUtilTest, TestIsUACEnabled) {
36  if (GetVersion() >= base::win::VERSION_VISTA) {
37    UserAccountControlIsEnabled();
38  } else {
39    EXPECT_TRUE(UserAccountControlIsEnabled());
40  }
41}
42
43TEST(BaseWinUtilTest, TestGetUserSidString) {
44  std::wstring user_sid;
45  EXPECT_TRUE(GetUserSidString(&user_sid));
46  EXPECT_TRUE(!user_sid.empty());
47}
48
49TEST(BaseWinUtilTest, TestGetNonClientMetrics) {
50  NONCLIENTMETRICS metrics = {0};
51  GetNonClientMetrics(&metrics);
52  EXPECT_TRUE(metrics.cbSize > 0);
53  EXPECT_TRUE(metrics.iScrollWidth > 0);
54  EXPECT_TRUE(metrics.iScrollHeight > 0);
55}
56
57}  // namespace win
58}  // namespace base
59