Roll leveldb 3f7758:803d69 (v1.17 -> v1.18)
[chromium-blink-merge.git] / chrome / test / data / chromeos / virtual_keyboard / layout_test.js
blobaf3d51b10efe76a6aabe1a4f47022123746cac4b
1 /*
2  * Copyright 2014 The Chromium Authors. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the LICENSE file.
5  */
7 /**
8  * Verifies that the layout matches with expectations.
9  * @param {Array.<string>} rows List of strings where each string indicates the
10  *     expected sequence of characters on the corresponding row.
11  */
12 function verifyLayout(rows) {
13   var rowIndex = 1;
14   rows.forEach(function(sequence) {
15     var rowId = 'row' + rowIndex++;
16     var first = sequence[0];
17     var key = findKey(first, rowId);
18     assertTrue(!!key, 'Unable to find "' + first + '" in "' + rowId + '"');
19     for (var i = 1; i < sequence.length; i++) {
20       var next = key.nextSibling;
21       assertTrue(!!next,
22                  'Unable to find key to right of "' + sequence[i - 1] + '"');
23       assertTrue(hasLabel(next, sequence[i]),
24                  'Unexpected label: expected: "' + sequence[i] +
25                  '" to follow "' + sequence[i - 1] + '"');
26       key = next;
27     }
28   });
31 /**
32  * Validates full layout for a US QWERTY keyboard.
33  */
34 function testFullQwertyLayoutAsync(testDoneCallback) {
35   var testCallback = function() {
36     var lowercase = [
37       '`1234567890-=',
38       'qwertyuiop[]\\',
39       'asdfghjkl;\'',
40       'zxcvbnm,./'
41     ];
42     var uppercase = [
43       '~!@#$%^&*()_+',
44       'QWERTYUIOP{}',
45       'ASDFGHJKL:"',
46       'ZXCVBNM<>?'
47     ];
48     verifyLayout(lowercase);
49     mockTap(findKeyById('ShiftLeft'));
50     verifyLayout(uppercase);
51     mockTap(findKeyById('ShiftRight'));
52     verifyLayout(lowercase);
53     testDoneCallback();
54   };
55   var config = {
56     keyset: 'us',
57     languageCode: 'en',
58     passwordLayout: 'us',
59     name: 'English'
60   };
61   onKeyboardReady(testCallback, config);
64 /**
65  * Validates compact layout for a US QWERTY keyboard.
66  */
67 function testCompactQwertyLayoutAsync(testDoneCallback) {
68   var testCallback = function() {
69     var lowercase = [
70       'qwertyuiop',
71       'asdfghjkl',
72       'zxcvbnm!?'
73     ];
74     var uppercase = [
75       'QWERTYUIOP',
76       'ASDFGHJKL',
77       'ZXCVBNM!?'
78     ];
79     var symbol = [
80       '1234567890',
81       '@#$%&-+()',
82       '\\=*"\':;!?'
83     ];
84     var more = [
85       '~`|',
86       '\u00a3\u00a2\u20ac\u00a5^\u00b0={}',
87       '\\\u00a9\u00ae\u2122\u2105[]\u00a1\u00bf'
88     ];
89     verifyLayout(lowercase);
90     mockTap(findKeyById('ShiftLeft'));
91     verifyLayout(uppercase);
92     mockTap(findKey('?123'));
93     verifyLayout(symbol);
94     mockTap(findKey('~[<'));
95     verifyLayout(more);
96     mockTap(findKey('abc'));
97     verifyLayout(lowercase);
98     testDoneCallback();
99   };
100   var config = {
101     keyset: 'us.compact.qwerty',
102     languageCode: 'en',
103     passwordLayout: 'us',
104     name: 'English'
105   };
106   onKeyboardReady(testCallback, config);