locale_tests_uitest.cc revision 3345a6884c488ff3a535c2c9acdd33d74b37e311
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 "chrome/test/ui/ui_test.h"
6
7#include "base/environment.h"
8#include "build/build_config.h"
9
10class LocaleTestsBase : public UITest {
11 public:
12  LocaleTestsBase() : UITest(), old_lc_all_(NULL) {
13  }
14
15 protected:
16  void RestoreLcAllEnvironment() {
17#if defined(OS_LINUX)
18    scoped_ptr<base::Environment> env(base::Environment::Create());
19    if (old_lc_all_) {
20      env->SetVar("LC_ALL", old_lc_all_);
21    } else {
22      env->UnSetVar("LC_ALL");
23    }
24#endif
25  };
26
27  const char* old_lc_all_;
28};
29
30
31class LocaleTestsDa : public LocaleTestsBase {
32 public:
33  LocaleTestsDa() : LocaleTestsBase() {
34    launch_arguments_.AppendSwitchASCII("lang", "da");
35
36    // Linux doesn't use --lang, it only uses environment variables to set the
37    // language.
38#if defined(OS_LINUX)
39    old_lc_all_ = getenv("LC_ALL");
40    setenv("LC_ALL", "da_DK.UTF-8", 1);
41#endif
42  }
43};
44
45class LocaleTestsHe : public LocaleTestsBase {
46 public:
47  LocaleTestsHe() : LocaleTestsBase() {
48    launch_arguments_.AppendSwitchASCII("lang", "he");
49#if defined(OS_LINUX)
50    old_lc_all_ = getenv("LC_ALL");
51    setenv("LC_ALL", "he_IL.UTF-8", 1);
52#endif
53  }
54};
55
56class LocaleTestsZhTw : public LocaleTestsBase {
57 public:
58  LocaleTestsZhTw() : LocaleTestsBase() {
59    launch_arguments_.AppendSwitchASCII("lang", "zh-TW");
60#if defined(OS_LINUX)
61    old_lc_all_ = getenv("LC_ALL");
62    setenv("LC_ALL", "zh_TW.UTF-8", 1);
63#endif
64  }
65};
66
67TEST_F(LocaleTestsDa, TestStart) {
68  // Just making sure we can start/shutdown cleanly.
69  RestoreLcAllEnvironment();
70}
71
72TEST_F(LocaleTestsHe, TestStart) {
73  // Just making sure we can start/shutdown cleanly.
74  RestoreLcAllEnvironment();
75}
76
77TEST_F(LocaleTestsZhTw, TestStart) {
78  // Just making sure we can start/shutdown cleanly.
79  RestoreLcAllEnvironment();
80}
81