| Index: mojo/public/dart/third_party/source_maps/test/common.dart
|
| diff --git a/mojo/public/dart/third_party/source_maps/test/common.dart b/mojo/public/dart/third_party/source_maps/test/common.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..73a8d406b98cd9bb12f0c3d8efd6421b28e75db4
|
| --- /dev/null
|
| +++ b/mojo/public/dart/third_party/source_maps/test/common.dart
|
| @@ -0,0 +1,107 @@
|
| +// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +/// Common input/output used by builder, parser and end2end tests
|
| +library test.common;
|
| +
|
| +import 'package:source_maps/source_maps.dart';
|
| +import 'package:source_span/source_span.dart';
|
| +import 'package:unittest/unittest.dart';
|
| +
|
| +/// Content of the source file
|
| +const String INPUT = '''
|
| +/** this is a comment. */
|
| +int longVar1 = 3;
|
| +
|
| +// this is a comment too
|
| +int longName(int longVar2) {
|
| + return longVar1 + longVar2;
|
| +}
|
| +''';
|
| +var input = new SourceFile(INPUT, url: 'input.dart');
|
| +
|
| +/// A span in the input file
|
| +SourceMapSpan ispan(int start, int end, [bool isIdentifier = false]) =>
|
| + new SourceMapFileSpan(input.span(start, end), isIdentifier: isIdentifier);
|
| +
|
| +SourceMapSpan inputVar1 = ispan(30, 38, true);
|
| +SourceMapSpan inputFunction = ispan(74, 82, true);
|
| +SourceMapSpan inputVar2 = ispan(87, 95, true);
|
| +
|
| +SourceMapSpan inputVar1NoSymbol = ispan(30, 38);
|
| +SourceMapSpan inputFunctionNoSymbol = ispan(74, 82);
|
| +SourceMapSpan inputVar2NoSymbol = ispan(87, 95);
|
| +
|
| +SourceMapSpan inputExpr = ispan(108, 127);
|
| +
|
| +/// Content of the target file
|
| +const String OUTPUT = '''
|
| +var x = 3;
|
| +f(y) => x + y;
|
| +''';
|
| +var output = new SourceFile(OUTPUT, url: 'output.dart');
|
| +
|
| +/// A span in the output file
|
| +SourceMapSpan ospan(int start, int end, [bool isIdentifier = false]) =>
|
| + new SourceMapFileSpan(output.span(start, end), isIdentifier: isIdentifier);
|
| +
|
| +SourceMapSpan outputVar1 = ospan(4, 5, true);
|
| +SourceMapSpan outputFunction = ospan(11, 12, true);
|
| +SourceMapSpan outputVar2 = ospan(13, 14, true);
|
| +SourceMapSpan outputVar1NoSymbol = ospan(4, 5);
|
| +SourceMapSpan outputFunctionNoSymbol = ospan(11, 12);
|
| +SourceMapSpan outputVar2NoSymbol = ospan(13, 14);
|
| +SourceMapSpan outputExpr = ospan(19, 24);
|
| +
|
| +/// Expected output mapping when recording the following four mappings:
|
| +/// inputVar1 <= outputVar1
|
| +/// inputFunction <= outputFunction
|
| +/// inputVar2 <= outputVar2
|
| +/// inputExpr <= outputExpr
|
| +///
|
| +/// This mapping is stored in the tests so we can independently test the builder
|
| +/// and parser algorithms without relying entirely on end2end tests.
|
| +const Map<String, dynamic> EXPECTED_MAP = const {
|
| + 'version': 3,
|
| + 'sourceRoot': '',
|
| + 'sources': const ['input.dart'],
|
| + 'names': const ['longVar1','longName','longVar2'],
|
| + 'mappings': 'IACIA;AAGAC,EAAaC,MACR',
|
| + 'file': 'output.dart'
|
| +};
|
| +
|
| +check(SourceSpan outputSpan, Mapping mapping, SourceMapSpan inputSpan,
|
| + bool realOffsets) {
|
| + var line = outputSpan.start.line;
|
| + var column = outputSpan.start.column;
|
| + var files = realOffsets ? {'input.dart': input} : null;
|
| + var span = mapping.spanFor(line, column, files: files);
|
| + var span2 = mapping.spanForLocation(outputSpan.start, files: files);
|
| +
|
| + // Both mapping APIs are equivalent.
|
| + expect(span.start.offset, span2.start.offset);
|
| + expect(span.start.line, span2.start.line);
|
| + expect(span.start.column, span2.start.column);
|
| + expect(span.end.offset, span2.end.offset);
|
| + expect(span.end.line, span2.end.line);
|
| + expect(span.end.column, span2.end.column);
|
| +
|
| + // Mapping matches our input location (modulo using real offsets)
|
| + expect(span.start.line, inputSpan.start.line);
|
| + expect(span.start.column, inputSpan.start.column);
|
| + expect(span.sourceUrl, inputSpan.sourceUrl);
|
| + expect(span.start.offset, realOffsets ? inputSpan.start.offset : 0);
|
| +
|
| + // Mapping includes the identifier, if any
|
| + if (inputSpan.isIdentifier) {
|
| + expect(span.end.line, inputSpan.end.line);
|
| + expect(span.end.column, inputSpan.end.column);
|
| + expect(span.end.offset, span.start.offset + inputSpan.text.length);
|
| + if (realOffsets) expect(span.end.offset, inputSpan.end.offset);
|
| + } else {
|
| + expect(span.end.offset, span.start.offset);
|
| + expect(span.end.line, span.start.line);
|
| + expect(span.end.column, span.start.column);
|
| + }
|
| +}
|
|
|