summaryrefslogtreecommitdiffstats
path: root/accessible/tests/mochitest/text/test_charboundary.html
blob: 5ca4120a47ded8e38994d5b41f1706844d8763de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<!DOCTYPE html>
<html>
<head>
  <title>Char boundary text tests</title>
  <link rel="stylesheet" type="text/css"
        href="chrome://mochikit/content/tests/SimpleTest/test.css" />

  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
  <script type="application/javascript"
          src="../common.js"></script>
  <script type="application/javascript"
          src="../text.js"></script>

  <script type="application/javascript">
    function doTest() {
      // ////////////////////////////////////////////////////////////////////////
      //
      // __h__e__l__l__o__ __m__y__ __f__r__i__e__n__d__
      //  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15

      var IDs = [ "i1", "d1", "e1", "t1" ];

      testCharBeforeOffset(IDs, 0, "", 0, 0);
      testCharBeforeOffset(IDs, 1, "h", 0, 1);
      testCharBeforeOffset(IDs, 14, "n", 13, 14);
      testCharBeforeOffset(IDs, 15, "d", 14, 15);

      testCharAtOffset(IDs, 0, "h", 0, 1);
      testCharAtOffset(IDs, 1, "e", 1, 2);
      testCharAtOffset(IDs, 14, "d", 14, 15);
      testCharAtOffset(IDs, 15, "", 15, 15);

      testCharAfterOffset(IDs, 0, "e", 1, 2);
      testCharAfterOffset(IDs, 1, "l", 2, 3);
      testCharAfterOffset(IDs, 14, "", 15, 15);
      testCharAfterOffset(IDs, 15, "", 15, 15);

      // ////////////////////////////////////////////////////////////////////////
      //
      // __B__r__a__v__e__ __S__i__r__ __ __R__o__b__i__n__ __ __ __r__a__n
      //  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21

      IDs = [ "i2", "d2", "e2", "t2" ];

      testCharBeforeOffset(IDs, 0, "", 0, 0);
      testCharBeforeOffset(IDs, 1, "B", 0, 1);
      testCharBeforeOffset(IDs, 6, " ", 5, 6);
      testCharBeforeOffset(IDs, 10, " ", 9, 10);
      testCharBeforeOffset(IDs, 11, " ", 10, 11);
      testCharBeforeOffset(IDs, 17, " ", 16, 17);
      testCharBeforeOffset(IDs, 19, " ", 18, 19);

      testCharAtOffset(IDs, 0, "B", 0, 1);
      testCharAtOffset(IDs, 1, "r", 1, 2);
      testCharAtOffset(IDs, 5, " ", 5, 6);
      testCharAtOffset(IDs, 9, " ", 9, 10);
      testCharAtOffset(IDs, 10, " ", 10, 11);
      testCharAtOffset(IDs, 17, " ", 17, 18);

      testCharAfterOffset(IDs, 0, "r", 1, 2);
      testCharAfterOffset(IDs, 1, "a", 2, 3);
      testCharAfterOffset(IDs, 4, " ", 5, 6);
      testCharAfterOffset(IDs, 5, "S", 6, 7);
      testCharAfterOffset(IDs, 8, " ", 9, 10);
      testCharAfterOffset(IDs, 9, " ", 10, 11);
      testCharAfterOffset(IDs, 10, "R", 11, 12);
      testCharAfterOffset(IDs, 15, " ", 16, 17);
      testCharAfterOffset(IDs, 16, " ", 17, 18);
      testCharAfterOffset(IDs, 17, " ", 18, 19);
      testCharAfterOffset(IDs, 18, "r", 19, 20);

      // ////////////////////////////////////////////////////////////////////////
      //
      // __o__n__e__w__o__r__d__\n
      //  0  1  2  3  4  5  6  7
      // __\n
      //  8
      // __t__w__o__ __w__o__r__d__s__\n
      //  9 10 11 12 13 14 15 16 17 18

      IDs = ["d3", "dbr3", "e3", "ebr3", "t3"];

      testCharBeforeOffset(IDs, 8, "\n", 7, 8);
      testCharBeforeOffset(IDs, 9, "\n", 8, 9);
      testCharBeforeOffset(IDs, 10, "t", 9, 10);

      testCharAtOffset(IDs, 7, "\n", 7, 8);
      testCharAtOffset(IDs, 8, "\n", 8, 9);
      testCharAtOffset(IDs, 9, "t", 9, 10);

      testCharAfterOffset(IDs, 6, "\n", 7, 8);
      testCharAfterOffset(IDs, 7, "\n", 8, 9);
      testCharAfterOffset(IDs, 8, "t", 9, 10);

      SimpleTest.finish();
    }

    SimpleTest.waitForExplicitFinish();
    addA11yLoadEvent(doTest);
  </script>
</head>
<body>

  <p id="display"></p>
  <div id="content" style="display: none"></div>
  <pre id="test">
  </pre>

  <input id="i1" value="hello my friend"/>
  <div id="d1">hello my friend</div>
  <div id="e1" contenteditable="true">hello my friend</div>
  <textarea id="t1" contenteditable="true">hello my friend</textarea>

  <input id="i2" value="Brave Sir  Robin   ran"/>
  <pre>
    <div id="d2">Brave Sir  Robin   ran</div>
    <div id="e2" contenteditable="true">Brave Sir  Robin   ran</div>
  </pre>
  <textarea id="t2" cols="300">Brave Sir  Robin   ran</textarea>

  <pre>
    <div id="d3">oneword

two words
</div>
    <div id="dbr3">oneword<br/><br/>two words<br/></div>
    <div id="e3" contenteditable="true">oneword

two words
</div>
    <div id="ebr3" contenteditable="true">oneword<br/><br/>two words<br/></div>
    <textarea id="t3" cols="300">oneword

two words</textarea>
  </pre>

</body>
</html>