cursor_selection_test.unitjs revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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(['../testing/chromevox_unittest_base.js']);
7
8/**
9 * Test fixture.
10 * @constructor
11 * @extends {ChromeVoxUnitTestBase}
12 */
13function CvoxCursorSelectionUnitTest() {}
14
15CvoxCursorSelectionUnitTest.prototype = {
16  __proto__: ChromeVoxUnitTestBase.prototype,
17
18  /** @override */
19  closureModuleDeps: [
20    'cvox.CursorSelection'
21  ]
22};
23
24TEST_F('CvoxCursorSelectionUnitTest', 'Reverse', function() {
25  this.loadDoc(function() {/*!
26     <div>
27       <p id="a">a</p>
28       <p id="b">b</p>
29     </div>
30  */});
31  var a = new cvox.Cursor($('a'), 0, '');
32  var b = new cvox.Cursor($('b'), 0, '');
33
34  var aa = new cvox.CursorSelection(a, a);
35  assertEquals(false, aa.isReversed());
36  aa.setReversed(true);
37  assertEquals(true, aa.isReversed());
38
39  var ab = new cvox.CursorSelection(a, b);
40  assertEquals(false, ab.isReversed());
41  ab.setReversed(true);
42  assertEquals(true, ab.isReversed());
43  assertEquals(true, ab.start.equals(b));
44  assertEquals(true, ab.end.equals(a));
45  ab.setReversed(false);
46  assertEquals(false, ab.isReversed());
47  assertEquals(true, ab.start.equals(a));
48  assertEquals(true, ab.end.equals(b));
49
50  ab = new cvox.CursorSelection(b, a);
51  assertEquals(false, ab.isReversed());
52  assertEquals(true, ab.start.equals(a));
53  assertEquals(true, ab.end.equals(b));
54
55  var ba = new cvox.CursorSelection(b, a, true);
56  assertEquals(true, ba.isReversed());
57  assertEquals(true, ba.start.equals(b));
58  assertEquals(true, ba.end.equals(a));
59
60  ba = new cvox.CursorSelection(a, b, true);
61  assertEquals(true, ba.isReversed());
62  assertEquals(true, ba.start.equals(b));
63  assertEquals(true, ba.end.equals(a));
64});
65
66
67/** Tests correctness of collapsing selections.  */
68TEST_F('CvoxCursorSelectionUnitTest', 'Collapse', function() {
69  this.loadDoc(function() {/*!
70    <p id='1'>This is a test.</p>
71  */});
72  var text = $('1').firstChild;
73  var a = new cvox.Cursor(text, 0, 'This is a test.');
74  var b = new cvox.Cursor(text, 13, 'This is a test.');
75  var c = new cvox.Cursor(text, 5, 'This is a test.');
76  var d = new cvox.Cursor(text, 8, 'This is a test.');
77
78  var aa = new cvox.CursorSelection(a, a).collapse();
79  assertEquals(0, aa.start.index);
80  assertEquals(0, aa.end.index);
81
82  var ab = new cvox.CursorSelection(a, b).collapse();
83  assertEquals(0, ab.start.index);
84  assertEquals(1, ab.end.index);
85
86  var ba = new cvox.CursorSelection(b, a, true).collapse();
87  assertEquals(12, ba.absStart().index);
88  assertEquals(13, ba.absEnd().index);
89
90  var cd = new cvox.CursorSelection(c, d).collapse();
91  assertEquals(5, cd.start.index);
92  assertEquals(6, cd.end.index);
93
94  var dc = new cvox.CursorSelection(d, c, true).collapse();
95  assertEquals(7, dc.absStart().index);
96  assertEquals(8, dc.absEnd().index);
97});
98