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 CvoxSentenceWalkerUnitTest() {}
14
15CvoxSentenceWalkerUnitTest.prototype = {
16  __proto__: CvoxWalkerUnitTestBase.prototype,
17
18  /** @override */
19  closureModuleDeps: CvoxWalkerUnitTestBase.prototype.closureModuleDeps.concat(
20      'cvox.SentenceWalker'),
21
22  /** @override */
23  newWalker: function() {
24    return new cvox.SentenceWalker();
25  },
26
27  /**
28   * Set up simple html.
29   * @private
30   */
31  setUpSimpleHtml_: function() {
32    this.loadDoc(function() {/*!
33      <div id="a"><p id="b">The quick</p><p id="c">brown. fox.</p></div>
34  */});
35  }
36};
37
38CvoxWalkerUnitTestBase.addCommonTests('CvoxSentenceWalkerUnitTest');
39
40TEST_F('CvoxSentenceWalkerUnitTest', 'testSimpleForwardSync', function() {
41  this.setUpSimpleHtml_();
42
43  var sel = cvox.CursorSelection.fromNode($('a'));
44  var ret = this.go(sel, 'sync', {
45    selText: 'The quick',
46    selParentNodeId: 'b',
47    selStartIndex: 0,
48    selEndIndex: 9,
49    selReversed: false
50  });
51
52  // valid selection
53  var ret2 = this.walker.sync(ret);
54  assertTrue(ret2.equals(ret));
55});
56
57TEST_F('CvoxSentenceWalkerUnitTest', 'testSimpleReversedSync', function() {
58  this.setUpSimpleHtml_();
59
60  var sel = cvox.CursorSelection.fromNode($('a'));
61  sel.setReversed(true);
62  var ret = this.go(sel, 'sync', {
63    selText: 'brown. fox.',
64    selParentNodeId: 'c',
65    selStartIndex: 0,
66    selEndIndex: 6,
67    selReversed: true
68  });
69
70  // valid selection
71  var ret2 = this.walker.sync(ret);
72  assertTrue(ret2.equals(ret));
73});
74
75TEST_F('CvoxSentenceWalkerUnitTest', 'testSimpleForwardNext', function() {
76  this.setUpSimpleHtml_();
77
78  var sel = cvox.CursorSelection.fromNode($('a'));
79  sel = this.walker.sync(sel);
80  var ret = this.go(sel, 'next', {
81    selText: 'brown. fox.',
82    selParentNodeId: 'c',
83    selStartIndex: 0,
84    selEndIndex: 6,
85    selReversed: false
86  });
87});
88
89TEST_F('CvoxSentenceWalkerUnitTest', 'testSimpleReversedNext', function() {
90  this.setUpSimpleHtml_();
91
92  var sel = cvox.CursorSelection.fromNode($('a'));
93  sel = this.walker.sync(sel.setReversed(true));
94  var ret = this.go(sel, 'next', {
95    selText: 'The quick',
96    selParentNodeId: 'b',
97    selStartIndex: 0,
98    selEndIndex: 9,
99    selReversed: true
100  });
101  ret = this.go(ret, 'next', null);
102});
103
104TEST_F('CvoxSentenceWalkerUnitTest', 'testControlElements', function() {
105  this.loadDoc(function() {/*!
106      <div id="a"><p>Before</p><input type="text"/><p>After</p></div>
107  */});
108  var node = $('a');
109  var sel = this.walker.sync(cvox.CursorSelection.fromNode(node));
110  var ret = this.go(sel, 'next', {descAnnotation: 'Edit text'});
111});
112