13345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/ui/ui_test.h"
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/environment.h"
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "build/build_config.h"
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass LocaleTestsBase : public UITest {
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  LocaleTestsBase() : UITest(), old_lc_all_(NULL) {
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
15513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  virtual void TearDown() {
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(OS_LINUX)
173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    scoped_ptr<base::Environment> env(base::Environment::Create());
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    if (old_lc_all_) {
193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      env->SetVar("LC_ALL", old_lc_all_);
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    } else {
213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      env->UnSetVar("LC_ALL");
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    }
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
24513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch    UITest::TearDown();
25513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  }
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
27513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch protected:
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const char* old_lc_all_;
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass LocaleTestsDa : public LocaleTestsBase {
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  LocaleTestsDa() : LocaleTestsBase() {
353345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    launch_arguments_.AppendSwitchASCII("lang", "da");
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    // Linux doesn't use --lang, it only uses environment variables to set the
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    // language.
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(OS_LINUX)
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    old_lc_all_ = getenv("LC_ALL");
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    setenv("LC_ALL", "da_DK.UTF-8", 1);
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass LocaleTestsHe : public LocaleTestsBase {
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  LocaleTestsHe() : LocaleTestsBase() {
493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    launch_arguments_.AppendSwitchASCII("lang", "he");
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(OS_LINUX)
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    old_lc_all_ = getenv("LC_ALL");
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    setenv("LC_ALL", "he_IL.UTF-8", 1);
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass LocaleTestsZhTw : public LocaleTestsBase {
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  LocaleTestsZhTw() : LocaleTestsBase() {
603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    launch_arguments_.AppendSwitchASCII("lang", "zh-TW");
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(OS_LINUX)
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    old_lc_all_ = getenv("LC_ALL");
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    setenv("LC_ALL", "zh_TW.UTF-8", 1);
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(LocaleTestsDa, TestStart) {
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Just making sure we can start/shutdown cleanly.
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
72c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(LocaleTestsHe, TestStart) {
73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Just making sure we can start/shutdown cleanly.
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
76c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(LocaleTestsZhTw, TestStart) {
77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Just making sure we can start/shutdown cleanly.
78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
79