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]));
+        }
+      }
+    });
   });
 }