@@ -15,9 +15,10 @@ limitations under the License.
1515*/
1616
1717import EditorModel from "../../src/editor/model" ;
18- import { createPartCreator , createRenderer , isDocumentPosition } from "./mock" ;
18+ import { createPartCreator , createRenderer } from "./mock" ;
1919import DocumentOffset from "../../src/editor/offset" ;
2020import { PillPart } from "../../src/editor/parts" ;
21+ import DocumentPosition from "../../src/editor/position" ;
2122
2223describe ( "editor/model" , function ( ) {
2324 describe ( "plain text manipulation" , function ( ) {
@@ -26,10 +27,8 @@ describe("editor/model", function () {
2627 const model = new EditorModel ( [ ] , createPartCreator ( ) , renderer ) ;
2728 model . update ( "hello" , "insertText" , new DocumentOffset ( 5 , true ) ) ;
2829 expect ( renderer . count ) . toBe ( 1 ) ;
29- if ( isDocumentPosition ( renderer . caret ) ) {
30- expect ( renderer . caret . index ) . toBe ( 0 ) ;
31- expect ( renderer . caret . offset ) . toBe ( 5 ) ;
32- }
30+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 0 ) ;
31+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 5 ) ;
3332 expect ( model . parts . length ) . toBe ( 1 ) ;
3433 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
3534 expect ( model . parts [ 0 ] . text ) . toBe ( "hello" ) ;
@@ -40,10 +39,8 @@ describe("editor/model", function () {
4039 const model = new EditorModel ( [ pc . plain ( "hello" ) ] , pc , renderer ) ;
4140 model . update ( "hello world" , "insertText" , new DocumentOffset ( 11 , true ) ) ;
4241 expect ( renderer . count ) . toBe ( 1 ) ;
43- if ( isDocumentPosition ( renderer . caret ) ) {
44- expect ( renderer . caret . index ) . toBe ( 0 ) ;
45- expect ( renderer . caret . offset ) . toBe ( 11 ) ;
46- }
42+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 0 ) ;
43+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 11 ) ;
4744 expect ( model . parts . length ) . toBe ( 1 ) ;
4845 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
4946 expect ( model . parts [ 0 ] . text ) . toBe ( "hello world" ) ;
@@ -54,10 +51,8 @@ describe("editor/model", function () {
5451 const model = new EditorModel ( [ pc . plain ( "world" ) ] , pc , renderer ) ;
5552 model . update ( "hello world" , "insertText" , new DocumentOffset ( 6 , false ) ) ;
5653 expect ( renderer . count ) . toBe ( 1 ) ;
57- if ( isDocumentPosition ( renderer . caret ) ) {
58- expect ( renderer . caret . index ) . toBe ( 0 ) ;
59- expect ( renderer . caret . offset ) . toBe ( 6 ) ;
60- }
54+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 0 ) ;
55+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 6 ) ;
6156 expect ( model . parts . length ) . toBe ( 1 ) ;
6257 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
6358 expect ( model . parts [ 0 ] . text ) . toBe ( "hello world" ) ;
@@ -70,10 +65,8 @@ describe("editor/model", function () {
7065 const model = new EditorModel ( [ pc . plain ( "hello" ) ] , pc , renderer ) ;
7166 model . update ( "hello\n" , "insertText" , new DocumentOffset ( 6 , true ) ) ;
7267 expect ( renderer . count ) . toBe ( 1 ) ;
73- if ( isDocumentPosition ( renderer . caret ) ) {
74- expect ( renderer . caret . index ) . toBe ( 1 ) ;
75- expect ( renderer . caret . offset ) . toBe ( 1 ) ;
76- }
68+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 1 ) ;
69+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 1 ) ;
7770 expect ( model . parts . length ) . toBe ( 2 ) ;
7871 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
7972 expect ( model . parts [ 0 ] . text ) . toBe ( "hello" ) ;
@@ -86,10 +79,8 @@ describe("editor/model", function () {
8679 const model = new EditorModel ( [ pc . plain ( "hello" ) ] , pc , renderer ) ;
8780 model . update ( "hello\n\n\nworld!" , "insertText" , new DocumentOffset ( 14 , true ) ) ;
8881 expect ( renderer . count ) . toBe ( 1 ) ;
89- if ( isDocumentPosition ( renderer . caret ) ) {
90- expect ( renderer . caret . index ) . toBe ( 4 ) ;
91- expect ( renderer . caret . offset ) . toBe ( 6 ) ;
92- }
82+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 4 ) ;
83+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 6 ) ;
9384 expect ( model . parts . length ) . toBe ( 5 ) ;
9485 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
9586 expect ( model . parts [ 0 ] . text ) . toBe ( "hello" ) ;
@@ -112,10 +103,8 @@ describe("editor/model", function () {
112103 ) ;
113104 model . update ( "hello\nwarm\nworld" , "insertText" , new DocumentOffset ( 10 , true ) ) ;
114105 expect ( renderer . count ) . toBe ( 1 ) ;
115- if ( isDocumentPosition ( renderer . caret ) ) {
116- expect ( renderer . caret . index ) . toBe ( 2 ) ;
117- expect ( renderer . caret . offset ) . toBe ( 4 ) ;
118- }
106+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 2 ) ;
107+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 4 ) ;
119108 expect ( model . parts . length ) . toBe ( 5 ) ;
120109 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
121110 expect ( model . parts [ 0 ] . text ) . toBe ( "hello" ) ;
@@ -135,10 +124,8 @@ describe("editor/model", function () {
135124 const pc = createPartCreator ( ) ;
136125 const model = new EditorModel ( [ pc . plain ( "try " ) , pc . roomPill ( "#someroom" ) ] , pc , renderer ) ;
137126 model . update ( "try foo#someroom" , "insertText" , new DocumentOffset ( 7 , false ) ) ;
138- if ( isDocumentPosition ( renderer . caret ) ) {
139- expect ( renderer . caret . index ) . toBe ( 0 ) ;
140- expect ( renderer . caret . offset ) . toBe ( 7 ) ;
141- }
127+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 0 ) ;
128+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 7 ) ;
142129 expect ( model . parts . length ) . toBe ( 2 ) ;
143130 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
144131 expect ( model . parts [ 0 ] . text ) . toBe ( "try foo" ) ;
@@ -150,10 +137,8 @@ describe("editor/model", function () {
150137 const pc = createPartCreator ( ) ;
151138 const model = new EditorModel ( [ pc . plain ( "try " ) , pc . roomPill ( "#someroom" ) , pc . plain ( "?" ) ] , pc , renderer ) ;
152139 model . update ( "try #some perhapsroom?" , "insertText" , new DocumentOffset ( 17 , false ) ) ;
153- if ( isDocumentPosition ( renderer . caret ) ) {
154- expect ( renderer . caret . index ) . toBe ( 2 ) ;
155- expect ( renderer . caret . offset ) . toBe ( 8 ) ;
156- }
140+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 2 ) ;
141+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 8 ) ;
157142 expect ( model . parts . length ) . toBe ( 3 ) ;
158143 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
159144 expect ( model . parts [ 0 ] . text ) . toBe ( "try " ) ;
@@ -168,10 +153,8 @@ describe("editor/model", function () {
168153 const model = new EditorModel ( [ pc . roomPill ( "#someroom" ) ] , pc , renderer ) ;
169154 model . update ( "#someroo" , "deleteContentBackward" , new DocumentOffset ( 8 , true ) ) ;
170155 expect ( renderer . count ) . toBe ( 1 ) ;
171- if ( isDocumentPosition ( renderer . caret ) ) {
172- expect ( renderer . caret . index ) . toBe ( - 1 ) ;
173- expect ( renderer . caret . offset ) . toBe ( 0 ) ;
174- }
156+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( - 1 ) ;
157+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 0 ) ;
175158 expect ( model . parts . length ) . toBe ( 0 ) ;
176159 } ) ;
177160 it ( "remove non-editable part with delete" , function ( ) {
@@ -180,10 +163,8 @@ describe("editor/model", function () {
180163 const model = new EditorModel ( [ pc . roomPill ( "#someroom" ) ] , pc , renderer ) ;
181164 model . update ( "someroom" , "deleteContentForward" , new DocumentOffset ( 0 , false ) ) ;
182165 expect ( renderer . count ) . toBe ( 1 ) ;
183- if ( isDocumentPosition ( renderer . caret ) ) {
184- expect ( renderer . caret . index ) . toBe ( - 1 ) ;
185- expect ( renderer . caret . offset ) . toBe ( 0 ) ;
186- }
166+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( - 1 ) ;
167+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 0 ) ;
187168 expect ( model . parts . length ) . toBe ( 0 ) ;
188169 } ) ;
189170 } ) ;
@@ -196,10 +177,8 @@ describe("editor/model", function () {
196177 model . update ( "hello @a" , "insertText" , new DocumentOffset ( 8 , true ) ) ;
197178
198179 expect ( renderer . count ) . toBe ( 1 ) ;
199- if ( isDocumentPosition ( renderer . caret ) ) {
200- expect ( renderer . caret . index ) . toBe ( 1 ) ;
201- expect ( renderer . caret . offset ) . toBe ( 2 ) ;
202- }
180+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 1 ) ;
181+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 2 ) ;
203182 expect ( model . parts . length ) . toBe ( 2 ) ;
204183 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
205184 expect ( model . parts [ 0 ] . text ) . toBe ( "hello " ) ;
@@ -211,10 +190,8 @@ describe("editor/model", function () {
211190 model . autoComplete . tryComplete ( ) ; // see MockAutoComplete
212191
213192 expect ( renderer . count ) . toBe ( 2 ) ;
214- if ( isDocumentPosition ( renderer . caret ) ) {
215- expect ( renderer . caret . index ) . toBe ( 1 ) ;
216- expect ( renderer . caret . offset ) . toBe ( 5 ) ;
217- }
193+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 1 ) ;
194+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 5 ) ;
218195 expect ( model . parts . length ) . toBe ( 2 ) ;
219196 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
220197 expect ( model . parts [ 0 ] . text ) . toBe ( "hello " ) ;
@@ -230,10 +207,8 @@ describe("editor/model", function () {
230207 model . update ( "hello #r" , "insertText" , new DocumentOffset ( 8 , true ) ) ;
231208
232209 expect ( renderer . count ) . toBe ( 1 ) ;
233- if ( isDocumentPosition ( renderer . caret ) ) {
234- expect ( renderer . caret . index ) . toBe ( 1 ) ;
235- expect ( renderer . caret . offset ) . toBe ( 2 ) ;
236- }
210+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 1 ) ;
211+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 2 ) ;
237212 expect ( model . parts . length ) . toBe ( 2 ) ;
238213 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
239214 expect ( model . parts [ 0 ] . text ) . toBe ( "hello " ) ;
@@ -245,10 +220,8 @@ describe("editor/model", function () {
245220 model . autoComplete . tryComplete ( ) ; // see MockAutoComplete
246221
247222 expect ( renderer . count ) . toBe ( 2 ) ;
248- if ( isDocumentPosition ( renderer . caret ) ) {
249- expect ( renderer . caret . index ) . toBe ( 1 ) ;
250- expect ( renderer . caret . offset ) . toBe ( 9 ) ;
251- }
223+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 1 ) ;
224+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 9 ) ;
252225 expect ( model . parts . length ) . toBe ( 2 ) ;
253226 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
254227 expect ( model . parts [ 0 ] . text ) . toBe ( "hello " ) ;
@@ -268,10 +241,8 @@ describe("editor/model", function () {
268241 model . update ( "hello #riot-dev!!" , "insertText" , new DocumentOffset ( 17 , true ) ) ;
269242
270243 expect ( renderer . count ) . toBe ( 3 ) ;
271- if ( isDocumentPosition ( renderer . caret ) ) {
272- expect ( renderer . caret . index ) . toBe ( 2 ) ;
273- expect ( renderer . caret . offset ) . toBe ( 2 ) ;
274- }
244+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 2 ) ;
245+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 2 ) ;
275246 expect ( model . parts . length ) . toBe ( 3 ) ;
276247 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
277248 expect ( model . parts [ 0 ] . text ) . toBe ( "hello " ) ;
@@ -289,10 +260,8 @@ describe("editor/model", function () {
289260 model . update ( "try #define" , "insertFromPaste" , new DocumentOffset ( 11 , true ) ) ;
290261
291262 expect ( model . autoComplete ) . toBeFalsy ( ) ;
292- if ( isDocumentPosition ( renderer . caret ) ) {
293- expect ( renderer . caret . index ) . toBe ( 0 ) ;
294- expect ( renderer . caret . offset ) . toBe ( 11 ) ;
295- }
263+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 0 ) ;
264+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 11 ) ;
296265 expect ( model . parts . length ) . toBe ( 1 ) ;
297266 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
298267 expect ( model . parts [ 0 ] . text ) . toBe ( "try #define" ) ;
@@ -306,10 +275,8 @@ describe("editor/model", function () {
306275 model . update ( "try #define" , "insertFromDrop" , new DocumentOffset ( 11 , true ) ) ;
307276
308277 expect ( model . autoComplete ) . toBeFalsy ( ) ;
309- if ( isDocumentPosition ( renderer . caret ) ) {
310- expect ( renderer . caret . index ) . toBe ( 0 ) ;
311- expect ( renderer . caret . offset ) . toBe ( 11 ) ;
312- }
278+ expect ( ( renderer . caret as DocumentPosition ) . index ) . toBe ( 0 ) ;
279+ expect ( ( renderer . caret as DocumentPosition ) . offset ) . toBe ( 11 ) ;
313280 expect ( model . parts . length ) . toBe ( 1 ) ;
314281 expect ( model . parts [ 0 ] . type ) . toBe ( "plain" ) ;
315282 expect ( model . parts [ 0 ] . text ) . toBe ( "try #define" ) ;
0 commit comments