// Copyright (c) 2017, 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.

/**
 * @assertion String splitMapJoin(
 *  Pattern pattern, {
 *  String onMatch(
 *  Match match
 *  ),
 *  String onNonMatch(
 *  String nonMatch
 *  )
 *  })
 *  Splits the string, converts its parts, and combines them into a new string.
 *
 *  pattern is used to split the string into parts and separating matches.
 *
 *  Each match is converted to a string by calling onMatch. If onMatch is
 *  omitted, the matched string is used.
 *
 *  Each non-matched part is converted by a call to onNonMatch. If onNonMatch is
 *  omitted, the non-matching part is used.
 *
 *  Then all the converted parts are combined into the resulting string.
 * @description Checks that match argument of onNonMatch method is correct
 * @author sgrekhov@unipro.ru
 */
import "../../../Utils/expect.dart";

main() {
  check("11231233", "2", ["11", "31", "33"]);
  check("11231233", new RegExp("2"), ["11", "31", "33"]);
  check("11 23 12 33", new RegExp("\\s"), ["11", "23", "12", "33"]);
}

check(String str, Pattern pattern, List expected) {
  int count = 0;
  str.splitMapJoin(pattern, onNonMatch: (m) {
    Expect.equals(expected[count++], m);
    return "";
  });
}
