Add a test for verifying proto codec serialized ids
diff --git a/test/json_to_proto_test.dart b/test/json_to_proto_test.dart
index d79af7c..48c2c1b 100644
--- a/test/json_to_proto_test.dart
+++ b/test/json_to_proto_test.dart
@@ -5,6 +5,7 @@
import 'dart:convert';
import 'dart:io';
+import 'package:dart2js_info/info.dart';
import 'package:dart2js_info/json_info_codec.dart';
import 'package:dart2js_info/proto_info_codec.dart';
import 'package:test/test.dart';
@@ -28,5 +29,46 @@
expect(proto.program.noSuchMethodEnabled, isFalse);
expect(proto.program.minified, isFalse);
});
+
+ test('has proper id format', () {
+ final helloWorld = new File('test/hello_world/hello_world.js.info.json');
+ final json = jsonDecode(helloWorld.readAsStringSync());
+ final decoded = new AllInfoJsonCodec().decode(json);
+ final proto = new AllInfoProtoCodec().encode(decoded);
+
+ final expectedPrefixes = <InfoKind, String>{};
+ for (final kind in InfoKind.values) {
+ expectedPrefixes[kind] = kindToString(kind) + '/';
+ }
+
+ for (final info in proto.allInfos) {
+ final value = info.value;
+ if (value.hasLibraryInfo()) {
+ expect(value.serializedId,
+ startsWith(expectedPrefixes[InfoKind.library]));
+ } else if (value.hasClassInfo()) {
+ expect(
+ value.serializedId, startsWith(expectedPrefixes[InfoKind.clazz]));
+ } else if (value.hasFunctionInfo()) {
+ expect(value.serializedId,
+ startsWith(expectedPrefixes[InfoKind.function]));
+ } else if (value.hasFieldInfo()) {
+ expect(
+ value.serializedId, startsWith(expectedPrefixes[InfoKind.field]));
+ } else if (value.hasConstantInfo()) {
+ expect(value.serializedId,
+ startsWith(expectedPrefixes[InfoKind.constant]));
+ } else if (value.hasOutputUnitInfo()) {
+ expect(value.serializedId,
+ startsWith(expectedPrefixes[InfoKind.outputUnit]));
+ } else if (value.hasTypedefInfo()) {
+ expect(value.serializedId,
+ startsWith(expectedPrefixes[InfoKind.typedef]));
+ } else if (value.hasClosureInfo()) {
+ expect(value.serializedId,
+ startsWith(expectedPrefixes[InfoKind.closure]));
+ }
+ }
+ });
});
}