static void stringEquals()

in Utils/expect_common.dart [88:140]


  static void stringEquals(
        String? expected, String? actual, [String reason = '']) {
  String defaultMessage =
    'Expect.stringEquals(expected: <$expected>, <$actual>$reason) fails';
  if (expected == actual) return;

  if (expected == null || actual == null) {
    _fail('$defaultMessage');
  } else {
     // Scan from the left until we find a mismatch
    int left = 0;
    int expLength = expected.length;
    int actLength = actual.length;
    while (true) {
      if (left == expLength) {
        assert(left < actLength);
        String snippet = actual.substring(left, actLength);
        _fail('$defaultMessage\nDiff:\n...[  ]\n...[ $snippet ]');
      } else if (left == actLength) {
        assert(left < expLength);
        String snippet = expected.substring(left, expLength);
        _fail('$defaultMessage\nDiff:\n...[  ]\n...[ $snippet ]');
      } else if (expected[left] != actual[left]) {
        break;
      }
      left++;
    }

    // scan from the right until we find a mismatch
    int right = 0;
    while (true) {
      if (right == expLength) {
        assert(right < actLength);
        String snippet = actual.substring(0, actLength - right);
        _fail('$defaultMessage\nDiff:\n[  ]...\n[ $snippet ]...');
      } else if (right == actLength) {
        assert(right < expLength);
        String snippet = expected.substring(0, expLength - right);
        _fail('$defaultMessage\nDiff:\n[  ]...\n[ $snippet ]...');
      } else if ((expLength - right <= left || actLength - right <= left) ||
          ((expected[expLength - right - 1] != actual[actLength - right - 1]))){
        // Stop scanning if we've reached the end of the left-to-right match
        break;
      }
      right++;
    }

    String eSnippet = expected.substring(left, expLength - right);
    String aSnippet = actual.substring(left, actLength - right);
    String diff = '\nDiff:\n...[ $eSnippet ]...\n...[ $aSnippet ]...';
    _fail('$defaultMessage$diff');
  }
 }