1// Copyright 2014 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 test fixture.
6GEN_INCLUDE(['walker_unittest_base.js']);
7
8/**
9 * Test fixture.
10 * @constructor
11 * @extends {CvoxWalkerTestBase}
12 */
13function CvoxWordWalkerUnitTest() {}
14
15CvoxWordWalkerUnitTest.prototype = {
16  __proto__: CvoxWalkerUnitTestBase.prototype,
17
18  /** @override */
19  closureModuleDeps: CvoxWalkerUnitTestBase.prototype.closureModuleDeps.concat(
20      'cvox.WordWalker'),
21
22  /** @override */
23  newWalker: function() {
24    return new cvox.WordWalker();
25  },
26
27  /**
28   * Set up for the simple tests so we don't have to repeat.
29   * @private
30   */
31  setUpSimpleHtml_: function() {
32    this.loadDoc(function() {/*!
33      <div id="a"><p id="b">The </p><p id="c">quick brown.</p></div>
34     */});
35  }
36};
37
38CvoxWalkerUnitTestBase.addCommonTests('CvoxWordWalkerUnitTest');
39
40TEST_F('CvoxWordWalkerUnitTest', 'testSimpleForwardSync', function() {
41  this.setUpSimpleHtml_();
42
43  // invalid selection
44  var sel = cvox.CursorSelection.fromNode(document.getElementById('a'));
45  var ret = this.go(sel, 'sync', {
46    selText: 'The ',
47    selParentNodeId: 'b',
48    selStartIndex: 0,
49    selEndIndex: 3,
50    selReversed: false
51  });
52
53  // valid selection
54  var ret2 = this.walker.sync(ret);
55  assertTrue(ret2.equals(ret));
56});
57
58TEST_F('CvoxWordWalkerUnitTest', 'testSimpleReversedSync', function() {
59  this.setUpSimpleHtml_();
60
61  // invalid selection
62  var sel = cvox.CursorSelection.fromNode(document.getElementById('a'));
63  sel.setReversed(true);
64  var ret = this.go(sel, 'sync', {
65    selText: 'quick brown.',
66    selParentNodeId: 'c',
67    selStartIndex: 0,
68    selEndIndex: 5,
69    selReversed: true
70  });
71
72  // valid selection
73  var ret2 = this.walker.sync(ret);
74  assertTrue(ret2.equals(ret));
75});
76
77TEST_F('CvoxWordWalkerUnitTest', 'testSimpleForwardNext', function() {
78  this.setUpSimpleHtml_();
79
80  var sel = cvox.CursorSelection.fromNode(document.getElementById('a'));
81  sel = this.walker.sync(sel);
82  var ret = this.go(sel, 'next', {
83    selText: 'quick brown.',
84    selParentNodeId: 'c',
85    selStartIndex: 0,
86    selEndIndex: 5,
87    selReversed: false
88  });
89});
90
91TEST_F('CvoxWordWalkerUnitTest', 'testSimpleReversedNext', function() {
92  this.setUpSimpleHtml_();
93
94  var sel = cvox.CursorSelection.fromNode(document.getElementById('a'));
95  sel = this.walker.sync(sel.setReversed(true));
96  var ret = this.go(sel, 'next', {
97    selText: 'The ',
98    selParentNodeId: 'b',
99    selStartIndex: 0,
100    selEndIndex: 3,
101    selReversed: true
102  });
103});
104