word_walker_test.unitjs revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
283750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch// Use of this source code is governed by a BSD-style license that can be
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// found in the LICENSE file.
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Include test fixture.
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)GEN_INCLUDE(['walker_unittest_base.js']);
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/**
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Test fixture.
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {CvoxWalkerTestBase}
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function CvoxWordWalkerUnitTest() {}
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)CvoxWordWalkerUnitTest.prototype = {
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  __proto__: CvoxWalkerUnitTestBase.prototype,
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  /** @override */
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  closureModuleDeps: CvoxWalkerUnitTestBase.prototype.closureModuleDeps.concat(
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)      'cvox.WordWalker'),
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  /** @override */
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  newWalker: function() {
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    return new cvox.WordWalker();
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  },
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  /**
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   * Set up for the simple tests so we don't have to repeat.
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   * @private
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   */
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  setUpSimpleHtml_: function() {
3283750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch    this.loadDoc(function() {/*!
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)      <div id="a"><p id="b">The </p><p id="c">quick brown.</p></div>
3483750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch     */});
355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  }
3651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)};
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3883750176c3ee2cea66c8a9751271026a5901be3aBen MurdochCvoxWalkerUnitTestBase.addCommonTests('CvoxWordWalkerUnitTest');
395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4083750176c3ee2cea66c8a9751271026a5901be3aBen MurdochTEST_F('CvoxWordWalkerUnitTest', 'testSimpleForwardSync', function() {
4183750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch  this.setUpSimpleHtml_();
4283750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch
4383750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch  // invalid selection
4483750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch  var sel = cvox.CursorSelection.fromNode(document.getElementById('a'));
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  var ret = this.go(sel, 'sync', {
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    selText: 'The ',
4751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    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