@@ -73,5 +73,51 @@ public void StringBuilderTextObjectExtensions_ViFindBeginningOfNextWordObjectBou
7373 Assert . Equal ( 46 , buffer . ViFindBeginningOfNextWordObjectBoundary ( 45 , wordDelimiters ) ) ;
7474 Assert . Equal ( 50 , buffer . ViFindBeginningOfNextWordObjectBoundary ( 46 , wordDelimiters ) ) ;
7575 }
76+
77+ [ Theory ]
78+ [ InlineData ( '\' ' ) ]
79+ [ InlineData ( '\" ' ) ]
80+ public void StringBuilderTextObjectExtensions_ViFindSpanOfInnerQuotedTextObjectBoundary ( char delimiter )
81+ {
82+ var buffer = new StringBuilder ( $ "_{ delimiter } _{ delimiter } { delimiter } _{ delimiter } { delimiter } _{ delimiter } ") ;
83+
84+ // text: _"_" "_" "_"
85+ // position: 012345678901
86+ // - 1
87+ // boundary: 111135557888
88+
89+ // when invoked once, the span is within the quotes
90+
91+ Assert . Equal ( ( 2 , 3 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 0 , repeated : 1 ) ) ;
92+ Assert . Equal ( ( 2 , 3 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 1 , repeated : 1 ) ) ;
93+ Assert . Equal ( ( 2 , 3 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 2 , repeated : 1 ) ) ;
94+ Assert . Equal ( ( 2 , 3 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 3 , repeated : 1 ) ) ;
95+ Assert . Equal ( ( 4 , 5 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 4 , repeated : 1 ) ) ;
96+ Assert . Equal ( ( 6 , 7 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 5 , repeated : 1 ) ) ;
97+ Assert . Equal ( ( 6 , 7 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 6 , repeated : 1 ) ) ;
98+ Assert . Equal ( ( 6 , 7 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 7 , repeated : 1 ) ) ;
99+ Assert . Equal ( ( 8 , 9 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 8 , repeated : 1 ) ) ;
100+ Assert . Equal ( ( 10 , 11 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 9 , repeated : 1 ) ) ;
101+ Assert . Equal ( ( 10 , 11 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 10 , repeated : 1 ) ) ;
102+ Assert . Equal ( ( 10 , 11 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 11 , repeated : 1 ) ) ;
103+ Assert . Equal ( ( 10 , 11 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 12 , repeated : 1 ) ) ;
104+
105+ // when invoked more than once, the span is around the quotes
106+
107+ Assert . Equal ( ( 1 , 4 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 0 , repeated : 42 ) ) ;
108+ Assert . Equal ( ( 1 , 4 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 1 , repeated : 42 ) ) ;
109+ Assert . Equal ( ( 1 , 4 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 2 , repeated : 42 ) ) ;
110+ Assert . Equal ( ( 1 , 4 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 3 , repeated : 42 ) ) ;
111+ Assert . Equal ( ( 3 , 6 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 4 , repeated : 42 ) ) ;
112+ Assert . Equal ( ( 5 , 8 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 5 , repeated : 42 ) ) ;
113+ Assert . Equal ( ( 5 , 8 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 6 , repeated : 42 ) ) ;
114+ Assert . Equal ( ( 5 , 8 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 7 , repeated : 42 ) ) ;
115+ Assert . Equal ( ( 7 , 10 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 8 , repeated : 42 ) ) ;
116+ Assert . Equal ( ( 9 , 12 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 9 , repeated : 42 ) ) ;
117+ Assert . Equal ( ( 9 , 12 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 10 , repeated : 42 ) ) ;
118+ Assert . Equal ( ( 9 , 12 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 11 , repeated : 42 ) ) ;
119+ Assert . Equal ( ( 9 , 12 ) , buffer . ViFindSpanOfInnerQuotedTextObjectBoundary ( delimiter , 12 , repeated : 42 ) ) ;
120+
121+ }
76122 }
77123}
0 commit comments