Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(344)

Side by Side Diff: chrome/test/webdriver/webdriver_key_converter_unittest.cc

Issue 6694007: Small test and ChromeDriver fixes to enable additional tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address Dennis' comments Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/test/webdriver/webdriver_key_converter.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/string16.h" 8 #include "base/string16.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "chrome/test/automation/automation_json_requests.h" 10 #include "chrome/test/automation/automation_json_requests.h"
11 #include "chrome/test/webdriver/webdriver_key_converter.h" 11 #include "chrome/test/webdriver/webdriver_key_converter.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13
14 namespace webdriver { 14 namespace webdriver {
15 15
16 void CheckEvents(const string16& keys, 16 void CheckEvents(const string16& keys,
17 WebKeyEvent expected_events[], 17 WebKeyEvent expected_events[],
18 size_t expected_size) { 18 size_t expected_size) {
19 std::vector<WebKeyEvent> events; 19 std::vector<WebKeyEvent> events;
20 ConvertKeysToWebKeyEvents(keys, &events); 20 std::string error_msg;
21 EXPECT_TRUE(ConvertKeysToWebKeyEvents(keys, &events, &error_msg));
21 EXPECT_EQ(expected_size, events.size()); 22 EXPECT_EQ(expected_size, events.size());
22 for (size_t i = 0; i < events.size() && i < expected_size; ++i) { 23 for (size_t i = 0; i < events.size() && i < expected_size; ++i) {
23 EXPECT_EQ(expected_events[i].type, events[i].type); 24 EXPECT_EQ(expected_events[i].type, events[i].type);
24 EXPECT_EQ(expected_events[i].key_code, events[i].key_code); 25 EXPECT_EQ(expected_events[i].key_code, events[i].key_code);
25 EXPECT_EQ(expected_events[i].unmodified_text, events[i].unmodified_text); 26 EXPECT_EQ(expected_events[i].unmodified_text, events[i].unmodified_text);
26 EXPECT_EQ(expected_events[i].modified_text, events[i].modified_text); 27 EXPECT_EQ(expected_events[i].modified_text, events[i].modified_text);
27 EXPECT_EQ(expected_events[i].modifiers, events[i].modifiers); 28 EXPECT_EQ(expected_events[i].modifiers, events[i].modifiers);
28 } 29 }
29 } 30 }
30 31
31 void CheckEvents(const std::string& keys, 32 void CheckEvents(const std::string& keys,
32 WebKeyEvent expected_events[], 33 WebKeyEvent expected_events[],
33 size_t expected_size) { 34 size_t expected_size) {
34 CheckEvents(UTF8ToUTF16(keys), expected_events, expected_size); 35 CheckEvents(UTF8ToUTF16(keys), expected_events, expected_size);
35 } 36 }
36 37
37 void CheckNonShiftChar(ui::KeyboardCode key_code, char character) { 38 void CheckNonShiftChar(ui::KeyboardCode key_code, char character) {
38 std::string char_string; 39 std::string char_string;
39 char_string.push_back(character); 40 char_string.push_back(character);
40 std::vector<WebKeyEvent> events; 41 std::vector<WebKeyEvent> events;
41 ConvertKeysToWebKeyEvents(ASCIIToUTF16(char_string), &events); 42 std::string error_msg;
43 EXPECT_TRUE(ConvertKeysToWebKeyEvents(ASCIIToUTF16(char_string), &events,
44 &error_msg));
42 ASSERT_EQ(3u, events.size()) << "Char: " << character; 45 ASSERT_EQ(3u, events.size()) << "Char: " << character;
43 EXPECT_EQ(key_code, events[0].key_code) << "Char: " << character; 46 EXPECT_EQ(key_code, events[0].key_code) << "Char: " << character;
44 ASSERT_EQ(1u, events[1].modified_text.length()) << "Char: " << character; 47 ASSERT_EQ(1u, events[1].modified_text.length()) << "Char: " << character;
45 ASSERT_EQ(1u, events[1].unmodified_text.length()) << "Char: " << character; 48 ASSERT_EQ(1u, events[1].unmodified_text.length()) << "Char: " << character;
46 EXPECT_EQ(character, events[1].modified_text[0]) << "Char: " << character; 49 EXPECT_EQ(character, events[1].modified_text[0]) << "Char: " << character;
47 EXPECT_EQ(character, events[1].unmodified_text[0]) << "Char: " << character; 50 EXPECT_EQ(character, events[1].unmodified_text[0]) << "Char: " << character;
48 EXPECT_EQ(key_code, events[2].key_code) << "Char: " << character; 51 EXPECT_EQ(key_code, events[2].key_code) << "Char: " << character;
49 } 52 }
50 53
51 void CheckShiftChar(ui::KeyboardCode key_code, char character, char lower) { 54 void CheckShiftChar(ui::KeyboardCode key_code, char character, char lower) {
52 std::string char_string; 55 std::string char_string;
53 char_string.push_back(character); 56 char_string.push_back(character);
54 std::vector<WebKeyEvent> events; 57 std::vector<WebKeyEvent> events;
55 ConvertKeysToWebKeyEvents(ASCIIToUTF16(char_string), &events); 58 std::string error_msg;
59 EXPECT_TRUE(ConvertKeysToWebKeyEvents(ASCIIToUTF16(char_string), &events,
60 &error_msg));
56 ASSERT_EQ(5u, events.size()) << "Char: " << character; 61 ASSERT_EQ(5u, events.size()) << "Char: " << character;
57 EXPECT_EQ(ui::VKEY_SHIFT, events[0].key_code) << "Char: " << character; 62 EXPECT_EQ(ui::VKEY_SHIFT, events[0].key_code) << "Char: " << character;
58 EXPECT_EQ(key_code, events[1].key_code) << "Char: " << character; 63 EXPECT_EQ(key_code, events[1].key_code) << "Char: " << character;
59 ASSERT_EQ(1u, events[2].modified_text.length()) << "Char: " << character; 64 ASSERT_EQ(1u, events[2].modified_text.length()) << "Char: " << character;
60 ASSERT_EQ(1u, events[2].unmodified_text.length()) << "Char: " << character; 65 ASSERT_EQ(1u, events[2].unmodified_text.length()) << "Char: " << character;
61 EXPECT_EQ(character, events[2].modified_text[0]) << "Char: " << character; 66 EXPECT_EQ(character, events[2].modified_text[0]) << "Char: " << character;
62 EXPECT_EQ(lower, events[2].unmodified_text[0]) << "Char: " << character; 67 EXPECT_EQ(lower, events[2].unmodified_text[0]) << "Char: " << character;
63 EXPECT_EQ(key_code, events[3].key_code) << "Char: " << character; 68 EXPECT_EQ(key_code, events[3].key_code) << "Char: " << character;
64 EXPECT_EQ(ui::VKEY_SHIFT, events[4].key_code) << "Char: " << character; 69 EXPECT_EQ(ui::VKEY_SHIFT, events[4].key_code) << "Char: " << character;
65 } 70 }
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 keys.push_back(static_cast<char16>(0xE008U)); 194 keys.push_back(static_cast<char16>(0xE008U));
190 keys.push_back(static_cast<char16>(0xE009U)); 195 keys.push_back(static_cast<char16>(0xE009U));
191 keys.push_back(static_cast<char16>(0xE009U)); 196 keys.push_back(static_cast<char16>(0xE009U));
192 keys.push_back(static_cast<char16>(0xE00AU)); 197 keys.push_back(static_cast<char16>(0xE00AU));
193 keys.push_back(static_cast<char16>(0xE00AU)); 198 keys.push_back(static_cast<char16>(0xE00AU));
194 keys.push_back(static_cast<char16>(0xE03DU)); 199 keys.push_back(static_cast<char16>(0xE03DU));
195 keys.push_back(static_cast<char16>(0xE03DU)); 200 keys.push_back(static_cast<char16>(0xE03DU));
196 CheckEvents(keys, event_array, arraysize(event_array)); 201 CheckEvents(keys, event_array, arraysize(event_array));
197 } 202 }
198 203
204 TEST(WebDriverKeyConverter, AllShorthandKeys) {
205 WebKeyEvent event_array[] = {
206 CreateKeyDownEvent(ui::VKEY_RETURN, 0),
207 CreateCharEvent("\r", "\r", 0),
208 CreateKeyUpEvent(ui::VKEY_RETURN, 0),
209 CreateKeyDownEvent(ui::VKEY_RETURN, 0),
210 CreateCharEvent("\r", "\r", 0),
211 CreateKeyUpEvent(ui::VKEY_RETURN, 0),
212 CreateKeyDownEvent(ui::VKEY_TAB, 0),
213 CreateKeyUpEvent(ui::VKEY_TAB, 0),
214 CreateKeyDownEvent(ui::VKEY_BACK, 0),
215 CreateKeyUpEvent(ui::VKEY_BACK, 0),
216 CreateKeyDownEvent(ui::VKEY_SPACE, 0),
217 CreateCharEvent(" ", " ", 0),
218 CreateKeyUpEvent(ui::VKEY_SPACE, 0)};
219 CheckEvents("\n\r\n\t\b ", event_array, arraysize(event_array));
220 }
221
199 TEST(WebDriverKeyConverter, AllEnglishKeyboardSymbols) { 222 TEST(WebDriverKeyConverter, AllEnglishKeyboardSymbols) {
200 string16 keys; 223 string16 keys;
201 const ui::KeyboardCode kSymbolKeyCodes[] = { 224 const ui::KeyboardCode kSymbolKeyCodes[] = {
202 ui::VKEY_OEM_3, 225 ui::VKEY_OEM_3,
203 ui::VKEY_OEM_MINUS, 226 ui::VKEY_OEM_MINUS,
204 ui::VKEY_OEM_PLUS, 227 ui::VKEY_OEM_PLUS,
205 ui::VKEY_OEM_4, 228 ui::VKEY_OEM_4,
206 ui::VKEY_OEM_6, 229 ui::VKEY_OEM_6,
207 ui::VKEY_OEM_5, 230 ui::VKEY_OEM_5,
208 ui::VKEY_OEM_1, 231 ui::VKEY_OEM_1,
(...skipping 27 matching lines...) Expand all
236 offset = ui::VKEY_0; 259 offset = ui::VKEY_0;
237 else 260 else
238 offset = ui::VKEY_0 + 7; 261 offset = ui::VKEY_0 + 7;
239 ui::KeyboardCode expected_code = static_cast<ui::KeyboardCode>(offset + i); 262 ui::KeyboardCode expected_code = static_cast<ui::KeyboardCode>(offset + i);
240 CheckShiftChar(expected_code, kUpperChars[i], kLowerChars[i]); 263 CheckShiftChar(expected_code, kUpperChars[i], kLowerChars[i]);
241 } 264 }
242 } 265 }
243 266
244 TEST(WebDriverKeyConverter, AllSpecialWebDriverKeysOnEnglishKeyboard) { 267 TEST(WebDriverKeyConverter, AllSpecialWebDriverKeysOnEnglishKeyboard) {
245 const char kTextKeys[] = { 268 const char kTextKeys[] = {
246 ' ', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ';', '=', '0', '1', '2', '3', '4', '5', 269 0, 0, 0, 0, 0, 0, '\r', '\r', 0, 0, 0, 0, 0, ' ', 0, 0, 0, 0, 0, 0, 0, 0,
247 '6', '7', '8', '9', '*', '+', ',', '-', '.', '/'}; 270 0, 0, ';', '=', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
271 '*', '+', ',', '-', '.', '/'};
248 for (size_t i = 0; i <= 0x3D; ++i) { 272 for (size_t i = 0; i <= 0x3D; ++i) {
249 if (i > 0x29 && i < 0x31) 273 if (i > 0x29 && i < 0x31)
250 continue; 274 continue;
251 string16 keys; 275 string16 keys;
252 keys.push_back(0xE000U + i); 276 keys.push_back(0xE000U + i);
253 std::vector<WebKeyEvent> events; 277 std::vector<WebKeyEvent> events;
254 ConvertKeysToWebKeyEvents(keys, &events); 278 std::string error_msg;
255 if (i == 0xD || (i >= 0x18 && i <= 0x29)) { 279 if (i == 1) {
256 ASSERT_EQ(3u, events.size()) << "Index: " << i; 280 EXPECT_FALSE(ConvertKeysToWebKeyEvents(keys, &events, &error_msg))
257 ASSERT_EQ(1u, events[1].unmodified_text.length()) << "Index: " << i;
258 EXPECT_EQ(kTextKeys[i - 0xD], events[1].unmodified_text[0])
259 << "Index: " << i; 281 << "Index: " << i;
260 } else if (i < 2) {
261 EXPECT_EQ(0u, events.size()) << "Index: " << i; 282 EXPECT_EQ(0u, events.size()) << "Index: " << i;
262 } else { 283 } else {
263 EXPECT_EQ(2u, events.size()) << "Index: " << i; 284 EXPECT_TRUE(ConvertKeysToWebKeyEvents(keys, &events, &error_msg))
285 << "Index: " << i;
286 if (i == 0) {
287 EXPECT_EQ(0u, events.size()) << "Index: " << i;
288 } else if (i == 6 || i == 7 || i == 0xD || (i >= 0x18 && i <= 0x29)) {
289 ASSERT_EQ(3u, events.size()) << "Index: " << i;
290 ASSERT_EQ(1u, events[1].unmodified_text.length()) << "Index: " << i;
291 EXPECT_EQ(kTextKeys[i], events[1].unmodified_text[0])
292 << "Index: " << i;
293 } else {
294 EXPECT_EQ(2u, events.size()) << "Index: " << i;
295 }
264 } 296 }
265 } 297 }
266 } 298 }
267 299
268 } // namespace webdriver 300 } // namespace webdriver
OLDNEW
« no previous file with comments | « chrome/test/webdriver/webdriver_key_converter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698