Index: pkg/source_maps/test/span_test.dart |
diff --git a/pkg/source_maps/test/span_test.dart b/pkg/source_maps/test/span_test.dart |
index 66bd8a8cbb577dfccc1f658ea3a857c268ad2a80..c7b9cde16ed5f73f83e09fdb9c046c5191fef29b 100644 |
--- a/pkg/source_maps/test/span_test.dart |
+++ b/pkg/source_maps/test/span_test.dart |
@@ -69,22 +69,80 @@ main() { |
expect(file.getText(line + 2, line + 11), '34+6789_1'); |
}); |
- test('get location message', () { |
- // fifth line (including 4 new lines), columns 2 .. 11 |
- var line = 10 + 80 + 31 + 27 + 4; |
- expect(file.getLocationMessage('the message', line + 2, line + 11), |
- 'file:5:3: the message\n' |
- '1234+6789_1234\n' |
- ' ^^^^^^^^^'); |
- }); |
+ group('location message', () { |
+ test('first line', () { |
+ expect(file.getLocationMessage('the message', 1, 3), |
+ 'file:1:2: the message\n' |
+ '+23456789_\n' |
+ ' ^^'); |
+ }); |
- test('get location message - no file url', () { |
- var line = 10 + 80 + 31 + 27 + 4; |
- expect(new SourceFile.text(null, TEST_FILE).getLocationMessage( |
- 'the message', line + 2, line + 11), |
- ':5:3: the message\n' |
- '1234+6789_1234\n' |
- ' ^^^^^^^^^'); |
+ test('in the middle of the file', () { |
+ // fifth line (including 4 new lines), columns 2 .. 11 |
+ var line = 10 + 80 + 31 + 27 + 4; |
+ expect(file.getLocationMessage('the message', line + 2, line + 11), |
+ 'file:5:3: the message\n' |
+ '1234+6789_1234\n' |
+ ' ^^^^^^^^^'); |
+ }); |
+ |
+ test('no file url', () { |
+ var line = 10 + 80 + 31 + 27 + 4; |
+ expect(new SourceFile.text(null, TEST_FILE).getLocationMessage( |
+ 'the message', line + 2, line + 11), |
+ ':5:3: the message\n' |
+ '1234+6789_1234\n' |
+ ' ^^^^^^^^^'); |
+ }); |
+ |
+ test('penultimate line', () { |
+ // We search '\n' backwards twice because last line is \n terminated: |
+ int index = TEST_FILE.lastIndexOf('\n'); |
+ var start = TEST_FILE.lastIndexOf('\n', index - 1) - 3; |
+ expect(file.getLocationMessage('the message', start, start + 2), |
+ 'file:11:41: the message\n' |
+ '123456789_+23456789_123456789_123456789_123\n' |
+ ' ^^'); |
+ }); |
+ |
+ test('last line', () { |
+ var start = TEST_FILE.lastIndexOf('\n') - 2; |
+ expect(file.getLocationMessage('the message', start, start + 1), |
+ 'file:12:28: the message\n' |
+ '123456789_1+3456789_123456789\n' |
+ ' ^'); |
+ }); |
+ |
+ group('no trailing empty-line at the end -', () { |
+ var text = TEST_FILE.substring(0, TEST_FILE.length - 1); |
+ var file2 = new SourceFile.text('file', text); |
+ |
+ test('penultimate line', () { |
+ var start = text.lastIndexOf('\n') - 3; |
+ expect(file2.getLocationMessage('the message', start, start + 2), |
+ 'file:11:41: the message\n' |
+ '123456789_+23456789_123456789_123456789_123\n' |
+ ' ^^'); |
+ }); |
+ |
+ test('last line', () { |
+ var start = text.length - 2; |
+ expect(file2.getLocationMessage('the message', start, start + 1), |
+ 'file:12:28: the message\n' |
+ '123456789_1+3456789_123456789\n' |
+ ' ^'); |
+ }); |
+ }); |
+ |
+ test('single line', () { |
+ var text = "this is a single line"; |
+ int start = text.indexOf(' ') + 1; |
+ var file2 = new SourceFile.text('file', text); |
+ expect(file2.getLocationMessage('the message', start, start + 2), |
+ 'file:1:${start + 1}: the message\n' |
+ 'this is a single line\n' |
+ ' ^^'); |
+ }); |
}); |
test('location getters', () { |
@@ -242,17 +300,11 @@ main() { |
'123456789_1+3456789_123456789\n' |
' ^'); |
- // TODO(sigmund): consider also fixing this and report file:10:4 |
// The answer below is different because the segment parsing only knows |
// about the 10 lines it has (and nothing about the possible extra lines |
// afterwards) |
expect(segment.getLocationMessage('the message', start, start + 1), |
- 'file:10:112: the message\n'); |
- |
- // The number 112 includes the count of extra characters past the |
- // segment, which we verify here: |
- var lastSegmentLineStart = segmentText.lastIndexOf('\n'); |
- expect(start - baseOffset - lastSegmentLineStart, 112); |
+ 'file:11:1: the message\n'); |
}); |
}); |
}); |