@@ -555,6 +555,86 @@ suite('Editor Model - TextModel', () => {
555555
556556 model . dispose ( ) ;
557557 } ) ;
558+
559+ test ( 'findNextMatch without regex' , ( ) => {
560+ var testObject = new TextModel ( [ ] , TextModel . toRawText ( 'line line one\nline two\nthree' , TextModel . DEFAULT_CREATION_OPTIONS ) ) ;
561+
562+ let actual = testObject . findNextMatch ( 'line' , { lineNumber : 1 , column : 1 } , false , false , false ) ;
563+ assert . equal ( new Range ( 1 , 1 , 1 , 5 ) . toString ( ) , actual . toString ( ) ) ;
564+
565+ actual = testObject . findNextMatch ( 'line' , actual . getEndPosition ( ) , false , false , false ) ;
566+ assert . equal ( new Range ( 1 , 6 , 1 , 10 ) . toString ( ) , actual . toString ( ) ) ;
567+
568+ actual = testObject . findNextMatch ( 'line' , { lineNumber : 1 , column : 3 } , false , false , false ) ;
569+ assert . equal ( new Range ( 1 , 6 , 1 , 10 ) . toString ( ) , actual . toString ( ) ) ;
570+
571+ actual = testObject . findNextMatch ( 'line' , actual . getEndPosition ( ) , false , false , false ) ;
572+ assert . equal ( new Range ( 2 , 1 , 2 , 5 ) . toString ( ) , actual . toString ( ) ) ;
573+
574+ actual = testObject . findNextMatch ( 'line' , actual . getEndPosition ( ) , false , false , false ) ;
575+ assert . equal ( new Range ( 1 , 1 , 1 , 5 ) . toString ( ) , actual . toString ( ) ) ;
576+ } ) ;
577+
578+ test ( 'findNextMatch with beginning boundary regex' , ( ) => {
579+ var testObject = new TextModel ( [ ] , TextModel . toRawText ( 'line one\nline two\nthree' , TextModel . DEFAULT_CREATION_OPTIONS ) ) ;
580+
581+ let actual = testObject . findNextMatch ( '^line' , { lineNumber : 1 , column : 1 } , true , false , false ) ;
582+ assert . equal ( new Range ( 1 , 1 , 1 , 5 ) . toString ( ) , actual . toString ( ) ) ;
583+
584+ actual = testObject . findNextMatch ( '^line' , actual . getEndPosition ( ) , true , false , false ) ;
585+ assert . equal ( new Range ( 2 , 1 , 2 , 5 ) . toString ( ) , actual . toString ( ) ) ;
586+
587+ actual = testObject . findNextMatch ( '^line' , { lineNumber : 1 , column : 3 } , true , false , false ) ;
588+ assert . equal ( new Range ( 2 , 1 , 2 , 5 ) . toString ( ) , actual . toString ( ) ) ;
589+
590+ actual = testObject . findNextMatch ( '^line' , actual . getEndPosition ( ) , true , false , false ) ;
591+ assert . equal ( new Range ( 1 , 1 , 1 , 5 ) . toString ( ) , actual . toString ( ) ) ;
592+ } ) ;
593+
594+ test ( 'findNextMatch with beginning boundary regex and line has repetitive beginnings' , ( ) => {
595+ var testObject = new TextModel ( [ ] , TextModel . toRawText ( 'line line one\nline two\nthree' , TextModel . DEFAULT_CREATION_OPTIONS ) ) ;
596+
597+ let actual = testObject . findNextMatch ( '^line' , { lineNumber : 1 , column : 1 } , true , false , false ) ;
598+ assert . equal ( new Range ( 1 , 1 , 1 , 5 ) . toString ( ) , actual . toString ( ) ) ;
599+
600+ actual = testObject . findNextMatch ( '^line' , actual . getEndPosition ( ) , true , false , false ) ;
601+ assert . equal ( new Range ( 2 , 1 , 2 , 5 ) . toString ( ) , actual . toString ( ) ) ;
602+
603+ actual = testObject . findNextMatch ( '^line' , { lineNumber : 1 , column : 3 } , true , false , false ) ;
604+ assert . equal ( new Range ( 2 , 1 , 2 , 5 ) . toString ( ) , actual . toString ( ) ) ;
605+
606+ actual = testObject . findNextMatch ( '^line' , actual . getEndPosition ( ) , true , false , false ) ;
607+ assert . equal ( new Range ( 1 , 1 , 1 , 5 ) . toString ( ) , actual . toString ( ) ) ;
608+ } ) ;
609+
610+ test ( 'findNextMatch with beginning boundary multiline regex and line has repetitive beginnings' , ( ) => {
611+ var testObject = new TextModel ( [ ] , TextModel . toRawText ( 'line line one\nline two\nline three' , TextModel . DEFAULT_CREATION_OPTIONS ) ) ;
612+
613+ let actual = testObject . findNextMatch ( '^line.*\\nline' , { lineNumber : 1 , column : 1 } , true , false , false ) ;
614+ assert . equal ( new Range ( 1 , 1 , 2 , 5 ) . toString ( ) , actual . toString ( ) ) ;
615+
616+ actual = testObject . findNextMatch ( '^line.*\\nline' , actual . getEndPosition ( ) , true , false , false ) ;
617+ assert . equal ( new Range ( 1 , 1 , 2 , 5 ) . toString ( ) , actual . toString ( ) ) ;
618+
619+ actual = testObject . findNextMatch ( '^line.*\\nline' , { lineNumber : 2 , column : 1 } , true , false , false ) ;
620+ assert . equal ( new Range ( 2 , 1 , 3 , 5 ) . toString ( ) , actual . toString ( ) ) ;
621+ } ) ;
622+
623+ test ( 'findNextMatch with ending boundary regex' , ( ) => {
624+ var testObject = new TextModel ( [ ] , TextModel . toRawText ( 'one line line\ntwo line\nthree' , TextModel . DEFAULT_CREATION_OPTIONS ) ) ;
625+
626+ let actual = testObject . findNextMatch ( 'line$' , { lineNumber : 1 , column : 1 } , true , false , false ) ;
627+ assert . equal ( new Range ( 1 , 10 , 1 , 14 ) . toString ( ) , actual . toString ( ) ) ;
628+
629+ actual = testObject . findNextMatch ( 'line$' , { lineNumber : 1 , column : 4 } , true , false , false ) ;
630+ assert . equal ( new Range ( 1 , 10 , 1 , 14 ) . toString ( ) , actual . toString ( ) ) ;
631+
632+ actual = testObject . findNextMatch ( 'line$' , actual . getEndPosition ( ) , true , false , false ) ;
633+ assert . equal ( new Range ( 2 , 5 , 2 , 9 ) . toString ( ) , actual . toString ( ) ) ;
634+
635+ actual = testObject . findNextMatch ( 'line$' , actual . getEndPosition ( ) , true , false , false ) ;
636+ assert . equal ( new Range ( 1 , 10 , 1 , 14 ) . toString ( ) , actual . toString ( ) ) ;
637+ } ) ;
558638} ) ;
559639
560640suite ( 'TextModel.getLineIndentGuide' , ( ) => {
0 commit comments