Index: packages/source_maps/test/parser_test.dart |
diff --git a/packages/source_maps/test/parser_test.dart b/packages/source_maps/test/parser_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b14fdf4253f059c8d5df447fed2f4d0cfd7fbc6c |
--- /dev/null |
+++ b/packages/source_maps/test/parser_test.dart |
@@ -0,0 +1,135 @@ |
+// 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. |
+ |
+library test.parser_test; |
+ |
+import 'dart:convert'; |
+import 'package:unittest/unittest.dart'; |
+import 'package:source_maps/source_maps.dart'; |
+import 'common.dart'; |
+ |
+const Map<String, dynamic> MAP_WITH_NO_SOURCE_LOCATION = const { |
+ 'version': 3, |
+ 'sourceRoot': '', |
+ 'sources': const ['input.dart'], |
+ 'names': const [], |
+ 'mappings': 'A', |
+ 'file': 'output.dart' |
+}; |
+ |
+const Map<String, dynamic> MAP_WITH_SOURCE_LOCATION = const { |
+ 'version': 3, |
+ 'sourceRoot': '', |
+ 'sources': const ['input.dart'], |
+ 'names': const [], |
+ 'mappings': 'AAAA', |
+ 'file': 'output.dart' |
+}; |
+ |
+const Map<String, dynamic> MAP_WITH_SOURCE_LOCATION_AND_NAME = const { |
+ 'version': 3, |
+ 'sourceRoot': '', |
+ 'sources': const ['input.dart'], |
+ 'names': const ['var'], |
+ 'mappings': 'AAAAA', |
+ 'file': 'output.dart' |
+}; |
+ |
+main() { |
+ test('parse', () { |
+ var mapping = parseJson(EXPECTED_MAP); |
+ check(outputVar1, mapping, inputVar1, false); |
+ check(outputVar2, mapping, inputVar2, false); |
+ check(outputFunction, mapping, inputFunction, false); |
+ check(outputExpr, mapping, inputExpr, false); |
+ }); |
+ |
+ test('parse + json', () { |
+ var mapping = parse(JSON.encode(EXPECTED_MAP)); |
+ check(outputVar1, mapping, inputVar1, false); |
+ check(outputVar2, mapping, inputVar2, false); |
+ check(outputFunction, mapping, inputFunction, false); |
+ check(outputExpr, mapping, inputExpr, false); |
+ }); |
+ |
+ test('parse with file', () { |
+ var mapping = parseJson(EXPECTED_MAP); |
+ check(outputVar1, mapping, inputVar1, true); |
+ check(outputVar2, mapping, inputVar2, true); |
+ check(outputFunction, mapping, inputFunction, true); |
+ check(outputExpr, mapping, inputExpr, true); |
+ }); |
+ |
+ test('parse with no source location', () { |
+ SingleMapping map = parse(JSON.encode(MAP_WITH_NO_SOURCE_LOCATION)); |
+ expect(map.lines.length, 1); |
+ expect(map.lines.first.entries.length, 1); |
+ TargetEntry entry = map.lines.first.entries.first; |
+ |
+ expect(entry.column, 0); |
+ expect(entry.sourceUrlId, null); |
+ expect(entry.sourceColumn, null); |
+ expect(entry.sourceLine, null); |
+ expect(entry.sourceNameId, null); |
+ }); |
+ |
+ test('parse with source location and no name', () { |
+ SingleMapping map = parse(JSON.encode(MAP_WITH_SOURCE_LOCATION)); |
+ expect(map.lines.length, 1); |
+ expect(map.lines.first.entries.length, 1); |
+ TargetEntry entry = map.lines.first.entries.first; |
+ |
+ expect(entry.column, 0); |
+ expect(entry.sourceUrlId, 0); |
+ expect(entry.sourceColumn, 0); |
+ expect(entry.sourceLine, 0); |
+ expect(entry.sourceNameId, null); |
+ }); |
+ |
+ test('parse with source location and name', () { |
+ SingleMapping map = parse(JSON.encode(MAP_WITH_SOURCE_LOCATION_AND_NAME)); |
+ expect(map.lines.length, 1); |
+ expect(map.lines.first.entries.length, 1); |
+ TargetEntry entry = map.lines.first.entries.first; |
+ |
+ expect(entry.sourceUrlId, 0); |
+ expect(entry.sourceUrlId, 0); |
+ expect(entry.sourceColumn, 0); |
+ expect(entry.sourceLine, 0); |
+ expect(entry.sourceNameId, 0); |
+ }); |
+ |
+ test('parse with source root', () { |
+ var inputMap = new Map.from(MAP_WITH_SOURCE_LOCATION); |
+ inputMap['sourceRoot'] = '/pkg/'; |
+ var mapping = parseJson(inputMap); |
+ expect(mapping.spanFor(0, 0).sourceUrl, Uri.parse("/pkg/input.dart")); |
+ |
+ var newSourceRoot = '/new/'; |
+ |
+ mapping.sourceRoot = newSourceRoot; |
+ inputMap["sourceRoot"] = newSourceRoot; |
+ |
+ expect(mapping.toJson(), equals(inputMap)); |
+ }); |
+ |
+ test('parse with map URL', () { |
+ var inputMap = new Map.from(MAP_WITH_SOURCE_LOCATION); |
+ inputMap['sourceRoot'] = 'pkg/'; |
+ var mapping = parseJson(inputMap, mapUrl: "file:///path/to/map"); |
+ expect(mapping.spanFor(0, 0).sourceUrl, |
+ Uri.parse("file:///path/to/pkg/input.dart")); |
+ }); |
+ |
+ test('parse and re-emit', () { |
+ for (var expected in [ |
+ EXPECTED_MAP, |
+ MAP_WITH_NO_SOURCE_LOCATION, |
+ MAP_WITH_SOURCE_LOCATION, |
+ MAP_WITH_SOURCE_LOCATION_AND_NAME]) { |
+ var mapping = parseJson(expected); |
+ expect(mapping.toJson(), equals(expected)); |
+ } |
+ }); |
+} |