OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 |
| 5 library test.end2end_test; |
| 6 |
| 7 import 'package:unittest/unittest.dart'; |
| 8 import 'package:source_maps/source_maps.dart'; |
| 9 import 'package:source_span/source_span.dart'; |
| 10 import 'common.dart'; |
| 11 |
| 12 main() { |
| 13 test('end-to-end setup', () { |
| 14 expect(inputVar1.text, 'longVar1'); |
| 15 expect(inputFunction.text, 'longName'); |
| 16 expect(inputVar2.text, 'longVar2'); |
| 17 expect(inputVar1NoSymbol.text, 'longVar1'); |
| 18 expect(inputFunctionNoSymbol.text, 'longName'); |
| 19 expect(inputVar2NoSymbol.text, 'longVar2'); |
| 20 expect(inputExpr.text, 'longVar1 + longVar2'); |
| 21 |
| 22 expect(outputVar1.text, 'x'); |
| 23 expect(outputFunction.text, 'f'); |
| 24 expect(outputVar2.text, 'y'); |
| 25 expect(outputVar1NoSymbol.text, 'x'); |
| 26 expect(outputFunctionNoSymbol.text, 'f'); |
| 27 expect(outputVar2NoSymbol.text, 'y'); |
| 28 expect(outputExpr.text, 'x + y'); |
| 29 }); |
| 30 |
| 31 test('build + parse', () { |
| 32 var map = (new SourceMapBuilder() |
| 33 ..addSpan(inputVar1, outputVar1) |
| 34 ..addSpan(inputFunction, outputFunction) |
| 35 ..addSpan(inputVar2, outputVar2) |
| 36 ..addSpan(inputExpr, outputExpr)) |
| 37 .build(output.url.toString()); |
| 38 var mapping = parseJson(map); |
| 39 check(outputVar1, mapping, inputVar1, false); |
| 40 check(outputVar2, mapping, inputVar2, false); |
| 41 check(outputFunction, mapping, inputFunction, false); |
| 42 check(outputExpr, mapping, inputExpr, false); |
| 43 }); |
| 44 |
| 45 test('build + parse - no symbols', () { |
| 46 var map = (new SourceMapBuilder() |
| 47 ..addSpan(inputVar1NoSymbol, outputVar1NoSymbol) |
| 48 ..addSpan(inputFunctionNoSymbol, outputFunctionNoSymbol) |
| 49 ..addSpan(inputVar2NoSymbol, outputVar2NoSymbol) |
| 50 ..addSpan(inputExpr, outputExpr)) |
| 51 .build(output.url.toString()); |
| 52 var mapping = parseJson(map); |
| 53 check(outputVar1NoSymbol, mapping, inputVar1NoSymbol, false); |
| 54 check(outputVar2NoSymbol, mapping, inputVar2NoSymbol, false); |
| 55 check(outputFunctionNoSymbol, mapping, inputFunctionNoSymbol, false); |
| 56 check(outputExpr, mapping, inputExpr, false); |
| 57 }); |
| 58 |
| 59 test('build + parse, repeated entries', () { |
| 60 var map = (new SourceMapBuilder() |
| 61 ..addSpan(inputVar1, outputVar1) |
| 62 ..addSpan(inputVar1, outputVar1) |
| 63 ..addSpan(inputFunction, outputFunction) |
| 64 ..addSpan(inputFunction, outputFunction) |
| 65 ..addSpan(inputVar2, outputVar2) |
| 66 ..addSpan(inputVar2, outputVar2) |
| 67 ..addSpan(inputExpr, outputExpr) |
| 68 ..addSpan(inputExpr, outputExpr)) |
| 69 .build(output.url.toString()); |
| 70 var mapping = parseJson(map); |
| 71 check(outputVar1, mapping, inputVar1, false); |
| 72 check(outputVar2, mapping, inputVar2, false); |
| 73 check(outputFunction, mapping, inputFunction, false); |
| 74 check(outputExpr, mapping, inputExpr, false); |
| 75 }); |
| 76 |
| 77 test('build + parse - no symbols, repeated entries', () { |
| 78 var map = (new SourceMapBuilder() |
| 79 ..addSpan(inputVar1NoSymbol, outputVar1NoSymbol) |
| 80 ..addSpan(inputVar1NoSymbol, outputVar1NoSymbol) |
| 81 ..addSpan(inputFunctionNoSymbol, outputFunctionNoSymbol) |
| 82 ..addSpan(inputFunctionNoSymbol, outputFunctionNoSymbol) |
| 83 ..addSpan(inputVar2NoSymbol, outputVar2NoSymbol) |
| 84 ..addSpan(inputVar2NoSymbol, outputVar2NoSymbol) |
| 85 ..addSpan(inputExpr, outputExpr)) |
| 86 .build(output.url.toString()); |
| 87 var mapping = parseJson(map); |
| 88 check(outputVar1NoSymbol, mapping, inputVar1NoSymbol, false); |
| 89 check(outputVar2NoSymbol, mapping, inputVar2NoSymbol, false); |
| 90 check(outputFunctionNoSymbol, mapping, inputFunctionNoSymbol, false); |
| 91 check(outputExpr, mapping, inputExpr, false); |
| 92 }); |
| 93 |
| 94 test('build + parse with file', () { |
| 95 var json = (new SourceMapBuilder() |
| 96 ..addSpan(inputVar1, outputVar1) |
| 97 ..addSpan(inputFunction, outputFunction) |
| 98 ..addSpan(inputVar2, outputVar2) |
| 99 ..addSpan(inputExpr, outputExpr)) |
| 100 .toJson(output.url.toString()); |
| 101 var mapping = parse(json); |
| 102 check(outputVar1, mapping, inputVar1, true); |
| 103 check(outputVar2, mapping, inputVar2, true); |
| 104 check(outputFunction, mapping, inputFunction, true); |
| 105 check(outputExpr, mapping, inputExpr, true); |
| 106 }); |
| 107 |
| 108 test('printer projecting marks + parse', () { |
| 109 var out = INPUT.replaceAll('long', '_s'); |
| 110 var file = new SourceFile(out, url: 'output2.dart'); |
| 111 var printer = new Printer('output2.dart'); |
| 112 printer.mark(ispan(0, 0)); |
| 113 |
| 114 bool first = true; |
| 115 var segments = INPUT.split('long'); |
| 116 expect(segments.length, 6); |
| 117 printer.add(segments[0], projectMarks: true); |
| 118 printer.mark(inputVar1); |
| 119 printer.add('_s'); |
| 120 printer.add(segments[1], projectMarks: true); |
| 121 printer.mark(inputFunction); |
| 122 printer.add('_s'); |
| 123 printer.add(segments[2], projectMarks: true); |
| 124 printer.mark(inputVar2); |
| 125 printer.add('_s'); |
| 126 printer.add(segments[3], projectMarks: true); |
| 127 printer.mark(inputExpr); |
| 128 printer.add('_s'); |
| 129 printer.add(segments[4], projectMarks: true); |
| 130 printer.add('_s'); |
| 131 printer.add(segments[5], projectMarks: true); |
| 132 |
| 133 expect(printer.text, out); |
| 134 |
| 135 var mapping = parse(printer.map); |
| 136 checkHelper(SourceMapSpan inputSpan, int adjustment) { |
| 137 var start = inputSpan.start.offset - adjustment; |
| 138 var end = (inputSpan.end.offset - adjustment) - 2; |
| 139 var span = new SourceMapFileSpan(file.span(start, end), |
| 140 isIdentifier: inputSpan.isIdentifier); |
| 141 check(span, mapping, inputSpan, true); |
| 142 } |
| 143 |
| 144 checkHelper(inputVar1, 0); |
| 145 checkHelper(inputFunction, 2); |
| 146 checkHelper(inputVar2, 4); |
| 147 checkHelper(inputExpr, 6); |
| 148 |
| 149 // We projected correctly lines that have no mappings |
| 150 check(file.span(66, 66), mapping, ispan(45, 45), true); |
| 151 check(file.span(63, 64), mapping, ispan(45, 45), true); |
| 152 check(file.span(68, 68), mapping, ispan(70, 70), true); |
| 153 check(file.span(71, 71), mapping, ispan(70, 70), true); |
| 154 |
| 155 // Start of the last line |
| 156 var oOffset = out.length - 2; |
| 157 var iOffset = INPUT.length - 2; |
| 158 check(file.span(oOffset, oOffset), mapping, ispan(iOffset, iOffset), true); |
| 159 check(file.span(oOffset + 1, oOffset + 1), mapping, |
| 160 ispan(iOffset, iOffset), true); |
| 161 }); |
| 162 } |
OLD | NEW |