|  | // 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. | 
|  |  | 
|  | 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/codes/cfe_codes.dart' | 
|  | show | 
|  | Code, | 
|  | DiagnosticMessageFromJson, | 
|  | FormattedMessage, | 
|  | LocatedMessage, | 
|  | Message; | 
|  |  | 
|  | /// Test that turning a message into json and back again retains the wanted | 
|  | /// information. | 
|  | void 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, problemMessage: ''); | 
|  | LocatedMessage locatedMessage = | 
|  | new LocatedMessage(Uri.parse("what:ever/fun_1.dart"), 117, 2, message); | 
|  | FormattedMessage formattedMessage2 = new FormattedMessage( | 
|  | locatedMessage, | 
|  | "Formatted string Plain #2", | 
|  | "Formatted string Colorized #2", | 
|  | 13, | 
|  | 2, | 
|  | Severity.error, []); | 
|  | FormattedMessage formattedMessage3 = new FormattedMessage( | 
|  | locatedMessage, | 
|  | "Formatted string Plain #3", | 
|  | "Formatted string Colorized #3", | 
|  | 313, | 
|  | 32, | 
|  | Severity.error, []); | 
|  |  | 
|  | FormattedMessage formattedMessage1 = new FormattedMessage( | 
|  | locatedMessage, | 
|  | "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<String> list1 = a.ansiFormatted.toList(); | 
|  | List<String> 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<Uri>? uriList1 = a.involvedFiles?.toList(); | 
|  | List<Uri>? 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"; | 
|  | } |