// Copyright (c) 2019, 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. // @dart = 2.9 import 'package:_fe_analyzer_shared/src/messages/diagnostic_message.dart' show DiagnosticMessage, getMessageUri; import 'package:_fe_analyzer_shared/src/messages/severity.dart' show Severity; import 'package:front_end/src/fasta/fasta_codes.dart' show Code, DiagnosticMessageFromJson, FormattedMessage, LocatedMessage, Message; /// Test that turning a message into json and back again retains the wanted /// information. main() { for (int i = 0; i < Severity.values.length; i++) { Severity severity = Severity.values[i]; Code code = new Code("MyCodeName"); Message message = new Message(code, message: ''); LocatedMessage locatedMessage1 = new LocatedMessage(Uri.parse("what:ever/fun_1.dart"), 117, 2, message); FormattedMessage formattedMessage2 = new FormattedMessage( null, "Formatted string Plain #2", "Formatted string Colorized #2", 13, 2, Severity.error, []); FormattedMessage formattedMessage3 = new FormattedMessage( null, "Formatted string Plain #3", "Formatted string Colorized #3", 313, 32, Severity.error, []); FormattedMessage formattedMessage1 = new FormattedMessage( locatedMessage1, "Formatted string Plain", "Formatted string Colorized", 42, 86, severity, [ formattedMessage2, formattedMessage3 ], involvedFiles: [ Uri.parse("what:ever/foo.dart"), Uri.parse("what:ever/bar.dart") ]); expect(formattedMessage1.codeName, "MyCodeName"); DiagnosticMessageFromJson diagnosticMessageFromJson = new DiagnosticMessageFromJson.fromJson( formattedMessage1.toJsonString()); compareMessages(formattedMessage1, diagnosticMessageFromJson); DiagnosticMessageFromJson diagnosticMessageFromJson2 = new DiagnosticMessageFromJson.fromJson( diagnosticMessageFromJson.toJsonString()); compareMessages(diagnosticMessageFromJson, diagnosticMessageFromJson2); expect(diagnosticMessageFromJson2.toJsonString(), formattedMessage1.toJsonString()); } } void compareMessages(DiagnosticMessage a, DiagnosticMessage b) { List list1 = a.ansiFormatted.toList(); List list2 = b.ansiFormatted.toList(); expect(list1.length, list2.length); for (int i = 0; i < list1.length; i++) { expect(list1[i], list2[i]); } list1 = a.plainTextFormatted.toList(); list2 = b.plainTextFormatted.toList(); expect(list1.length, list2.length); for (int i = 0; i < list1.length; i++) { expect(list1[i], list2[i]); } expect(a.severity, b.severity); expect(getMessageUri(a), getMessageUri(b)); List uriList1 = a.involvedFiles?.toList(); List uriList2 = b.involvedFiles?.toList(); expect(uriList1?.length, uriList2?.length); if (uriList1 != null) { for (int i = 0; i < uriList1.length; i++) { expect(uriList1[i], uriList2[i]); } } String string1 = a.codeName; String string2 = b.codeName; expect(string1, string2); } void expect(Object actual, Object expect) { if (expect != actual) throw "Expected $expect got $actual"; }