@@ -223,5 +223,44 @@ TEST(Source, DisplayErrorLocationFullWidth) {
223223 " \n | ..^" );
224224}
225225
226+ TEST (SourceSubrange, Description) {
227+ ASSERT_OK_AND_ASSIGN (auto source, NewSource (" hello world" , " subrange-test" ));
228+ SourceSubrange subrange (*source, SourceRange{0 , 5 });
229+ EXPECT_THAT (subrange.description (), Eq (" subrange-test" ));
230+ }
231+
232+ TEST (SourceSubrange, Content) {
233+ ASSERT_OK_AND_ASSIGN (auto source, NewSource (" hello world" , " subrange-test" ));
234+ SourceSubrange subrange (*source, SourceRange{6 , 11 });
235+ EXPECT_THAT (subrange.content ().ToString (), Eq (" world" ));
236+ }
237+
238+ TEST (SourceSubrange, ContentEmpty) {
239+ ASSERT_OK_AND_ASSIGN (auto source, NewSource (" hello world" , " subrange-test" ));
240+ SourceSubrange subrange (*source, SourceRange{5 , 5 });
241+ EXPECT_THAT (subrange.content ().ToString (), Eq (" " ));
242+ }
243+
244+ TEST (SourceSubrange, LineOffsetsNoNewlines) {
245+ ASSERT_OK_AND_ASSIGN (auto source,
246+ NewSource (" hello\n world\n " , " subrange-test" ));
247+ SourceSubrange subrange (*source, SourceRange{0 , 5 });
248+ EXPECT_THAT (subrange.line_offsets (), ElementsAre (6 ));
249+ }
250+
251+ TEST (SourceSubrange, LineOffsetsWithNewlines) {
252+ ASSERT_OK_AND_ASSIGN (auto source,
253+ NewSource (" hello\n world\n cel" , " subrange-test" ));
254+ SourceSubrange subrange (*source, SourceRange{0 , 11 });
255+ EXPECT_THAT (subrange.line_offsets (), ElementsAre (6 , 12 ));
256+ }
257+
258+ TEST (SourceSubrange, LineOffsetsMiddleSubrange) {
259+ ASSERT_OK_AND_ASSIGN (auto source,
260+ NewSource (" hello\n world\n cel\n cpp" , " subrange-test" ));
261+ SourceSubrange subrange (*source, SourceRange{6 , 15 });
262+ EXPECT_THAT (subrange.line_offsets (), ElementsAre (6 , 10 ));
263+ }
264+
226265} // namespace
227266} // namespace cel
0 commit comments