add test, support sdk maps
diff --git a/pkgs/dart_model/lib/src/dart_model.g.dart b/pkgs/dart_model/lib/src/dart_model.g.dart index f4f2ff8..2645808 100644 --- a/pkgs/dart_model/lib/src/dart_model.g.dart +++ b/pkgs/dart_model/lib/src/dart_model.g.dart
@@ -256,7 +256,10 @@ types, )); // A digest of all the bytes in the current buffer. - Digest get digest => md5.convert((node as MapInBuffer).buffer.serialize()); + Digest get digest => md5.convert(switch (node) { + MapInBuffer mapInBuffer => mapInBuffer.buffer.serialize(), + _ => (JsonBufferBuilder()..map.addAll(node)).serialize(), + }); /// Libraries by URI. Map<String, Library> get uris =>
diff --git a/pkgs/dart_model/test/model_test.dart b/pkgs/dart_model/test/model_test.dart index f17b0b6..acae8f2 100644 --- a/pkgs/dart_model/test/model_test.dart +++ b/pkgs/dart_model/test/model_test.dart
@@ -201,6 +201,11 @@ expect(copiedModel.qualifiedNameOf(member.node), null); expect(model.qualifiedNameOf(copiedMember.node), null); }); + + test('can produce and compare digests for buffer and SDK maps', () { + final copiedModel = Model.fromJson(_copyMap(model.node)); + expect(model.digest, copiedModel.digest); + }); }); group('QualifiedName', () {