missingExpectedMessage method

  1. @visibleForOverriding
String missingExpectedMessage(
  1. List<ExpectedDiagnostic> unmatchedExpected
)
inherited

Text to display upon failure, indicating that unmatchedExpected diagnostics were expected, but not found.

Implementation

@visibleForOverriding
String missingExpectedMessage(List<ExpectedDiagnostic> unmatchedExpected) {
  var buffer = StringBuffer();
  buffer.writeln('Expected but did not find:');
  for (var expected in unmatchedExpected) {
    buffer.write('  ');
    if (expected is ExpectedError) {
      buffer.write(expected._code);
    }
    if (expected is ExpectedLint) {
      buffer.write(expected._lintName);
    }
    buffer.write(' [${expected.offset}, ');
    buffer.write(expected.length);
    if (expected._messageContains.isNotEmpty) {
      buffer.write(', messageContains: ');
      buffer.write(
        json.encode([
          for (var pattern in expected._messageContains) pattern.toString(),
        ]),
      );
    }
    if (expected._correctionContains case Pattern correctionContains) {
      buffer.write(', correctionContains: ');
      buffer.write(json.encode(correctionContains.toString()));
    }

    if (expected._contextMessages
        case List(:var isNotEmpty) && var contextMessages when isNotEmpty) {
      buffer.write(', contextMessages: [');
      for (var i = 0; i < contextMessages.length; i++) {
        var contextMessage = contextMessages[i];
        if (i > 0) {
          buffer.write(', ');
        }
        buffer.write('message(');
        buffer.write(contextMessage.file.path);
        buffer.write(', ');
        buffer.write(contextMessage.offset);
        buffer.write(', ');
        buffer.write(contextMessage.length);
        if (contextMessage.text != null) {
          buffer.write(', text: ');
          buffer.write(json.encode(contextMessage.text));
        }
        if (contextMessage.textContains.isNotEmpty) {
          buffer.write(', textContains: ');
          buffer.write(
            json.encode([
              for (var pattern in contextMessage.textContains)
                pattern.toString(),
            ]),
          );
        }
        buffer.write(')');
      }
    }
    buffer.writeln(']');
  }
  return buffer.toString();
}