Index: chrome/browser/chromeos/input_method/xkeyboard_unittest.cc |
diff --git a/chrome/browser/chromeos/input_method/xkeyboard_unittest.cc b/chrome/browser/chromeos/input_method/xkeyboard_unittest.cc |
index 810bfcb4300e1bfefe105f00dac61a4c86698883..3e44d455fe169ddbc349881ebc7bedf489cd0129 100644 |
--- a/chrome/browser/chromeos/input_method/xkeyboard_unittest.cc |
+++ b/chrome/browser/chromeos/input_method/xkeyboard_unittest.cc |
@@ -49,16 +49,20 @@ class XKeyboardTest : public testing::Test { |
XKeyboardTest() |
: controller_(IBusController::Create()), |
util_(controller_->GetSupportedInputMethods()), |
- xkey_(util_), |
ui_thread_(BrowserThread::UI, &message_loop_) { |
} |
- static void SetUpTestCase() { |
+ virtual void SetUp() { |
+ xkey_.reset(new TestableXKeyboard(util_)); |
+ } |
+ |
+ virtual void TearDown() { |
+ xkey_.reset(); |
} |
scoped_ptr<IBusController> controller_; |
InputMethodUtil util_; |
- TestableXKeyboard xkey_; |
+ scoped_ptr<TestableXKeyboard> xkey_; |
MessageLoopForUI message_loop_; |
content::TestBrowserThread ui_thread_; |
@@ -104,127 +108,127 @@ bool DisplayAvailable() { |
// Tests CreateFullXkbLayoutName() function. |
TEST_F(XKeyboardTest, TestCreateFullXkbLayoutNameBasic) { |
// CreateFullXkbLayoutName should not accept an empty |layout_name|. |
- EXPECT_STREQ("", xkey_.CreateFullXkbLayoutName( |
+ EXPECT_STREQ("", xkey_->CreateFullXkbLayoutName( |
"", GetMap(kVoidKey, kVoidKey, kVoidKey)).c_str()); |
// CreateFullXkbLayoutName should not accept an empty ModifierMap. |
- EXPECT_STREQ("", xkey_.CreateFullXkbLayoutName( |
+ EXPECT_STREQ("", xkey_->CreateFullXkbLayoutName( |
"us", ModifierMap()).c_str()); |
// CreateFullXkbLayoutName should not accept an incomplete ModifierMap. |
ModifierMap tmp_map = GetMap(kVoidKey, kVoidKey, kVoidKey); |
tmp_map.pop_back(); |
- EXPECT_STREQ("", xkey_.CreateFullXkbLayoutName("us", tmp_map).c_str()); |
+ EXPECT_STREQ("", xkey_->CreateFullXkbLayoutName("us", tmp_map).c_str()); |
// CreateFullXkbLayoutName should not accept redundant ModifierMaps. |
tmp_map = GetMap(kVoidKey, kVoidKey, kVoidKey); |
tmp_map.push_back(ModifierKeyPair(kSearchKey, kVoidKey)); // two search maps |
- EXPECT_STREQ("", xkey_.CreateFullXkbLayoutName("us", tmp_map).c_str()); |
+ EXPECT_STREQ("", xkey_->CreateFullXkbLayoutName("us", tmp_map).c_str()); |
tmp_map = GetMap(kVoidKey, kVoidKey, kVoidKey); |
tmp_map.push_back(ModifierKeyPair(kLeftControlKey, kVoidKey)); // two ctrls |
- EXPECT_STREQ("", xkey_.CreateFullXkbLayoutName("us", tmp_map).c_str()); |
+ EXPECT_STREQ("", xkey_->CreateFullXkbLayoutName("us", tmp_map).c_str()); |
tmp_map = GetMap(kVoidKey, kVoidKey, kVoidKey); |
tmp_map.push_back(ModifierKeyPair(kLeftAltKey, kVoidKey)); // two alts. |
- EXPECT_STREQ("", xkey_.CreateFullXkbLayoutName("us", tmp_map).c_str()); |
+ EXPECT_STREQ("", xkey_->CreateFullXkbLayoutName("us", tmp_map).c_str()); |
// CreateFullXkbLayoutName should not accept invalid ModifierMaps. |
tmp_map = GetMap(kVoidKey, kVoidKey, kVoidKey); |
tmp_map.push_back(ModifierKeyPair(kVoidKey, kSearchKey)); // can't remap void |
- EXPECT_STREQ("", xkey_.CreateFullXkbLayoutName("us", tmp_map).c_str()); |
+ EXPECT_STREQ("", xkey_->CreateFullXkbLayoutName("us", tmp_map).c_str()); |
tmp_map = GetMap(kVoidKey, kVoidKey, kVoidKey); |
tmp_map.push_back(ModifierKeyPair(kCapsLockKey, kSearchKey)); // ditto |
- EXPECT_STREQ("", xkey_.CreateFullXkbLayoutName("us", tmp_map).c_str()); |
+ EXPECT_STREQ("", xkey_->CreateFullXkbLayoutName("us", tmp_map).c_str()); |
// CreateFullXkbLayoutName can remap Search/Ctrl/Alt to CapsLock. |
EXPECT_STREQ("us+chromeos(capslock_disabled_disabled)", |
- xkey_.CreateFullXkbLayoutName( |
+ xkey_->CreateFullXkbLayoutName( |
"us", |
GetMap(kCapsLockKey, kVoidKey, kVoidKey)).c_str()); |
EXPECT_STREQ("us+chromeos(disabled_capslock_disabled)", |
- xkey_.CreateFullXkbLayoutName( |
+ xkey_->CreateFullXkbLayoutName( |
"us", |
GetMap(kVoidKey, kCapsLockKey, kVoidKey)).c_str()); |
EXPECT_STREQ("us+chromeos(disabled_disabled_capslock)", |
- xkey_.CreateFullXkbLayoutName( |
+ xkey_->CreateFullXkbLayoutName( |
"us", |
GetMap(kVoidKey, kVoidKey, kCapsLockKey)).c_str()); |
// CreateFullXkbLayoutName should not accept non-alphanumeric characters |
// except "()-_". |
- EXPECT_STREQ("", xkey_.CreateFullXkbLayoutName( |
+ EXPECT_STREQ("", xkey_->CreateFullXkbLayoutName( |
"us!", GetMap(kVoidKey, kVoidKey, kVoidKey)).c_str()); |
- EXPECT_STREQ("", xkey_.CreateFullXkbLayoutName( |
+ EXPECT_STREQ("", xkey_->CreateFullXkbLayoutName( |
"us; /bin/sh", GetMap(kVoidKey, kVoidKey, kVoidKey)).c_str()); |
EXPECT_STREQ("ab-c_12+chromeos(disabled_disabled_disabled),us", |
- xkey_.CreateFullXkbLayoutName( |
+ xkey_->CreateFullXkbLayoutName( |
"ab-c_12", |
GetMap(kVoidKey, kVoidKey, kVoidKey)).c_str()); |
// CreateFullXkbLayoutName should not accept upper-case ascii characters. |
- EXPECT_STREQ("", xkey_.CreateFullXkbLayoutName( |
+ EXPECT_STREQ("", xkey_->CreateFullXkbLayoutName( |
"US", GetMap(kVoidKey, kVoidKey, kVoidKey)).c_str()); |
// CreateFullXkbLayoutName should accept lower-case ascii characters. |
for (int c = 'a'; c <= 'z'; ++c) { |
- EXPECT_STRNE("", xkey_.CreateFullXkbLayoutName( |
+ EXPECT_STRNE("", xkey_->CreateFullXkbLayoutName( |
std::string(3, c), |
GetMap(kVoidKey, kVoidKey, kVoidKey)).c_str()); |
} |
// CreateFullXkbLayoutName should accept numbers. |
for (int c = '0'; c <= '9'; ++c) { |
- EXPECT_STRNE("", xkey_.CreateFullXkbLayoutName( |
+ EXPECT_STRNE("", xkey_->CreateFullXkbLayoutName( |
std::string(3, c), |
GetMap(kVoidKey, kVoidKey, kVoidKey)).c_str()); |
} |
// CreateFullXkbLayoutName should accept a layout with a variant name. |
EXPECT_STREQ("us(dvorak)+chromeos(disabled_disabled_disabled)", |
- xkey_.CreateFullXkbLayoutName( |
+ xkey_->CreateFullXkbLayoutName( |
"us(dvorak)", |
GetMap(kVoidKey, kVoidKey, kVoidKey)).c_str()); |
EXPECT_STREQ("jp+chromeos(disabled_disabled_disabled),us", |
- xkey_.CreateFullXkbLayoutName( |
+ xkey_->CreateFullXkbLayoutName( |
"jp", // does not use AltGr, therefore no _keepralt. |
GetMap(kVoidKey, kVoidKey, kVoidKey)).c_str()); |
// When the layout name is not "us", the second layout should be added. |
- EXPECT_EQ(std::string::npos, xkey_.CreateFullXkbLayoutName( |
+ EXPECT_EQ(std::string::npos, xkey_->CreateFullXkbLayoutName( |
"us", GetMap(kVoidKey, kVoidKey, kVoidKey)).find(",us")); |
- EXPECT_EQ(std::string::npos, xkey_.CreateFullXkbLayoutName( |
+ EXPECT_EQ(std::string::npos, xkey_->CreateFullXkbLayoutName( |
"us(dvorak)", GetMap(kVoidKey, kVoidKey, kVoidKey)).find(",us")); |
- EXPECT_NE(std::string::npos, xkey_.CreateFullXkbLayoutName( |
+ EXPECT_NE(std::string::npos, xkey_->CreateFullXkbLayoutName( |
"gb(extd)", GetMap(kVoidKey, kVoidKey, kVoidKey)).find(",us")); |
- EXPECT_NE(std::string::npos, xkey_.CreateFullXkbLayoutName( |
+ EXPECT_NE(std::string::npos, xkey_->CreateFullXkbLayoutName( |
"jp", GetMap(kVoidKey, kVoidKey, kVoidKey)).find(",us")); |
} |
TEST_F(XKeyboardTest, TestCreateFullXkbLayoutNameKeepCapsLock) { |
EXPECT_STREQ("us(colemak)+chromeos(search_disabled_disabled)", |
- xkey_.CreateFullXkbLayoutName( |
+ xkey_->CreateFullXkbLayoutName( |
"us(colemak)", |
// The 1st kVoidKey should be ignored. |
GetMap(kVoidKey, kVoidKey, kVoidKey)).c_str()); |
EXPECT_STREQ("de(neo)+" |
"chromeos(search_leftcontrol_leftcontrol_keepralt),us", |
- xkey_.CreateFullXkbLayoutName( |
+ xkey_->CreateFullXkbLayoutName( |
// The 1st kLeftControlKey should be ignored. |
"de(neo)", GetMap(kLeftControlKey, |
kLeftControlKey, |
kLeftControlKey)).c_str()); |
EXPECT_STREQ("gb(extd)+chromeos(disabled_disabled_disabled_keepralt),us", |
- xkey_.CreateFullXkbLayoutName( |
+ xkey_->CreateFullXkbLayoutName( |
"gb(extd)", |
GetMap(kVoidKey, kVoidKey, kVoidKey)).c_str()); |
} |
TEST_F(XKeyboardTest, TestCreateFullXkbLayoutNameKeepAlt) { |
EXPECT_STREQ("us(intl)+chromeos(disabled_disabled_disabled_keepralt)", |
- xkey_.CreateFullXkbLayoutName( |
+ xkey_->CreateFullXkbLayoutName( |
"us(intl)", GetMap(kVoidKey, kVoidKey, kVoidKey)).c_str()); |
EXPECT_STREQ("kr(kr104)+" |
"chromeos(leftcontrol_leftcontrol_leftcontrol_keepralt),us", |
- xkey_.CreateFullXkbLayoutName( |
+ xkey_->CreateFullXkbLayoutName( |
"kr(kr104)", GetMap(kLeftControlKey, |
kLeftControlKey, |
kLeftControlKey)).c_str()); |
@@ -237,7 +241,7 @@ TEST_F(XKeyboardTest, TestCreateFullXkbLayoutNameModifierKeys) { |
for (int i = 0; i < static_cast<int>(kNumModifierKeys); ++i) { |
for (int j = 0; j < static_cast<int>(kNumModifierKeys); ++j) { |
for (int k = 0; k < static_cast<int>(kNumModifierKeys); ++k) { |
- const std::string layout = xkey_.CreateFullXkbLayoutName( |
+ const std::string layout = xkey_->CreateFullXkbLayoutName( |
"us", GetMap(ModifierKey(i), ModifierKey(j), ModifierKey(k))); |
// CreateFullXkbLayoutName should succeed (i.e. should not return "".) |
EXPECT_STREQ("us+", layout.substr(0, 3).c_str()) |
@@ -249,20 +253,39 @@ TEST_F(XKeyboardTest, TestCreateFullXkbLayoutNameModifierKeys) { |
} |
} |
-TEST_F(XKeyboardTest, TestSetCapsLockIsEnabled) { |
+TEST_F(XKeyboardTest, TestSetCapsLockEnabled) { |
+ if (!DisplayAvailable()) { |
+ return; |
+ } |
+ const bool initial_lock_state = xkey_->CapsLockIsEnabled(); |
+ xkey_->SetCapsLockEnabled(true); |
+ EXPECT_TRUE(TestableXKeyboard::CapsLockIsEnabled()); |
+ xkey_->SetCapsLockEnabled(false); |
+ EXPECT_FALSE(TestableXKeyboard::CapsLockIsEnabled()); |
+ xkey_->SetCapsLockEnabled(true); |
+ EXPECT_TRUE(TestableXKeyboard::CapsLockIsEnabled()); |
+ xkey_->SetCapsLockEnabled(false); |
+ EXPECT_FALSE(TestableXKeyboard::CapsLockIsEnabled()); |
+ xkey_->SetCapsLockEnabled(initial_lock_state); |
+} |
+ |
+TEST_F(XKeyboardTest, TestSetNumLockEnabled) { |
if (!DisplayAvailable()) { |
return; |
} |
- const bool initial_lock_state = XKeyboard::CapsLockIsEnabled(); |
- XKeyboard::SetCapsLockEnabled(true); |
- EXPECT_TRUE(XKeyboard::CapsLockIsEnabled()); |
- XKeyboard::SetCapsLockEnabled(false); |
- EXPECT_FALSE(XKeyboard::CapsLockIsEnabled()); |
- XKeyboard::SetCapsLockEnabled(true); |
- EXPECT_TRUE(XKeyboard::CapsLockIsEnabled()); |
- XKeyboard::SetCapsLockEnabled(false); |
- EXPECT_FALSE(XKeyboard::CapsLockIsEnabled()); |
- XKeyboard::SetCapsLockEnabled(initial_lock_state); |
+ const unsigned int num_lock_mask = TestableXKeyboard::GetNumLockMask(); |
+ ASSERT_NE(0U, num_lock_mask); |
+ |
+ const bool initial_lock_state = xkey_->NumLockIsEnabled(num_lock_mask); |
+ xkey_->SetNumLockEnabled(true); |
+ EXPECT_TRUE(TestableXKeyboard::NumLockIsEnabled(num_lock_mask)); |
+ xkey_->SetNumLockEnabled(false); |
+ EXPECT_FALSE(TestableXKeyboard::NumLockIsEnabled(num_lock_mask)); |
+ xkey_->SetNumLockEnabled(true); |
+ EXPECT_TRUE(TestableXKeyboard::NumLockIsEnabled(num_lock_mask)); |
+ xkey_->SetNumLockEnabled(false); |
+ EXPECT_FALSE(TestableXKeyboard::NumLockIsEnabled(num_lock_mask)); |
+ xkey_->SetNumLockEnabled(initial_lock_state); |
} |
TEST_F(XKeyboardTest, TestContainsModifierKeyAsReplacement) { |