// 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 replaceFirstMapped(Pattern from,
/// String replace(Match match), [int startIndex = 0])
/// Replace the first occurence of from in this string.
///
/// Returns a new string, which is this string except that the first match of
/// pattern, starting from startIndex, is replaced by the result of calling
/// replace with the match object.
/// @description Checks that this method replaces the first matched substring
/// only
/// @author sgrekhov@unipro.ru

import "../../../Utils/expect.dart";

main() {
  Expect.equals("0231", "1231".replaceFirstMapped("1", (m) => "0"));
  Expect.equals("03112", "123112".replaceFirstMapped("12", (m) => "0"));
  Expect.equals("10231", "123231".replaceFirstMapped("23", (m) => "0"));
  Expect.equals("12031\w", "12\w31\w".replaceFirstMapped("\w", (m) => "0"));
  Expect.equals("120\\w31", r"12\w\w31".replaceFirstMapped(r"\w", (m) => "0"));
  Expect.equals("0[:alpha:]1231", "[:alpha:][:alpha:]1231".replaceFirstMapped(
      "[:alpha:]", (m) => "0"));
}
