brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 2f1b628 Raw
38 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <regex>10 11// Test that replacing zero-length matches works correctly.12 13#include <cassert>14#include <regex>15#include <string>16#include "test_macros.h"17 18int main(int, char**) {19  // Various patterns that produce zero-length matches.20  assert(std::regex_replace("abc", std::regex(""), "!") == "!a!b!c!");21  assert(std::regex_replace("abc", std::regex("X*"), "!") == "!a!b!c!");22  assert(std::regex_replace("abc", std::regex("X{0,3}"), "!") == "!a!b!c!");23 24  // Replacement string has several characters.25  assert(std::regex_replace("abc", std::regex(""), "[!]") == "[!]a[!]b[!]c[!]");26 27  // Empty replacement string.28  assert(std::regex_replace("abc", std::regex(""), "") == "abc");29 30  // Empty input.31  assert(std::regex_replace("", std::regex(""), "!") == "!");32 33  // Not all matches are zero-length.34  assert(std::regex_replace("abCabCa", std::regex("C*"), "!") == "!a!b!!a!b!!a!");35 36  return 0;37}38