@@ -200,5 +200,56 @@ define(function (require, exports, module) {
200200 } ) ;
201201
202202 } ) ;
203+
204+ describe ( "Column/ch conversion" , function ( ) {
205+ it ( "should get mode in HTML file" , function ( ) {
206+ var content =
207+ "foo () {\n" +
208+ " one;\n" +
209+ "\ttwo;\n" +
210+ "}\n" +
211+ "\n" +
212+ "\tA\tB" ;
213+ createTestEditor ( content , "javascript" ) ;
214+
215+ // Tab size 4
216+
217+ expect ( myEditor . getColOffset ( { line : 1 , ch : 0 } ) ) . toBe ( 0 ) ;
218+ expect ( myEditor . getColOffset ( { line : 1 , ch : 1 } ) ) . toBe ( 1 ) ;
219+ expect ( myEditor . getColOffset ( { line : 1 , ch : 2 } ) ) . toBe ( 2 ) ;
220+ expect ( myEditor . getColOffset ( { line : 1 , ch : 3 } ) ) . toBe ( 3 ) ;
221+ expect ( myEditor . getColOffset ( { line : 1 , ch : 4 } ) ) . toBe ( 4 ) ;
222+ expect ( myEditor . getColOffset ( { line : 1 , ch : 5 } ) ) . toBe ( 5 ) ;
223+ expect ( myEditor . getColOffset ( { line : 2 , ch : 0 } ) ) . toBe ( 0 ) ;
224+ expect ( myEditor . getColOffset ( { line : 2 , ch : 1 } ) ) . toBe ( 4 ) ;
225+ expect ( myEditor . getColOffset ( { line : 2 , ch : 2 } ) ) . toBe ( 5 ) ;
226+ expect ( myEditor . getColOffset ( { line : 4 , ch : 0 } ) ) . toBe ( 0 ) ;
227+ expect ( myEditor . getColOffset ( { line : 5 , ch : 1 } ) ) . toBe ( 4 ) ;
228+ expect ( myEditor . getColOffset ( { line : 5 , ch : 2 } ) ) . toBe ( 5 ) ;
229+ expect ( myEditor . getColOffset ( { line : 5 , ch : 3 } ) ) . toBe ( 8 ) ;
230+ expect ( myEditor . getColOffset ( { line : 5 , ch : 4 } ) ) . toBe ( 9 ) ;
231+
232+ // Tab size 2
233+ Editor . setTabSize ( 2 ) ;
234+
235+ expect ( myEditor . getColOffset ( { line : 1 , ch : 0 } ) ) . toBe ( 0 ) ; // first line is all spaces: should be unchanged
236+ expect ( myEditor . getColOffset ( { line : 1 , ch : 1 } ) ) . toBe ( 1 ) ;
237+ expect ( myEditor . getColOffset ( { line : 1 , ch : 2 } ) ) . toBe ( 2 ) ;
238+ expect ( myEditor . getColOffset ( { line : 1 , ch : 3 } ) ) . toBe ( 3 ) ;
239+ expect ( myEditor . getColOffset ( { line : 1 , ch : 4 } ) ) . toBe ( 4 ) ;
240+ expect ( myEditor . getColOffset ( { line : 1 , ch : 5 } ) ) . toBe ( 5 ) ;
241+ expect ( myEditor . getColOffset ( { line : 2 , ch : 0 } ) ) . toBe ( 0 ) ; // but line with a tab shows different behavior
242+ expect ( myEditor . getColOffset ( { line : 2 , ch : 1 } ) ) . toBe ( 2 ) ;
243+ expect ( myEditor . getColOffset ( { line : 2 , ch : 2 } ) ) . toBe ( 3 ) ;
244+ expect ( myEditor . getColOffset ( { line : 4 , ch : 0 } ) ) . toBe ( 0 ) ;
245+ expect ( myEditor . getColOffset ( { line : 5 , ch : 1 } ) ) . toBe ( 2 ) ; // same here
246+ expect ( myEditor . getColOffset ( { line : 5 , ch : 2 } ) ) . toBe ( 3 ) ;
247+ expect ( myEditor . getColOffset ( { line : 5 , ch : 3 } ) ) . toBe ( 4 ) ;
248+ expect ( myEditor . getColOffset ( { line : 5 , ch : 4 } ) ) . toBe ( 5 ) ;
249+
250+ // Restore default
251+ Editor . setTabSize ( 4 ) ;
252+ } ) ;
253+ } ) ;
203254 } ) ;
204255} ) ;
0 commit comments